/* =========================================================
   PRAY Schach – Stylesheet (gleicher Look wie Poker, Blackjack, Solitär)
   ========================================================= */
:root{
  --bg:#09060f; --bg2:#0e0918; --card:#130d1f; --card2:#1a1229; --border:#2a1f42;
  --text:#f4eefc; --muted:#a597c0;
  --p:#ff2bd6; --v:#8b5cf6; --c:#22d3ee; --g:#1ed760; --r:#ff4d6d; --y:#facc15; --o:#fb923c;
  --pw:#22d3ee; --pw2:#e9fdff; --pw3:#0a6f86;      /* weiße Figuren */
  --pb:#ff2bd6; --pb2:#ffe3f6; --pb3:#7a0f63;      /* schwarze Figuren */
  --dark:#0c0814;                                   /* dunkle Felder */
  --l1:#3a1b52; --l2:#173e55; --l3:#2b1b5c;         /* Neon-Floor helle Felder */
  --frame:linear-gradient(135deg,var(--p),var(--v) 50%,var(--c));
  --shadow:0 20px 50px rgba(0,0,0,.45);
  --radius:22px;
  color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#f6f2fb; --bg2:#efe7f8; --card:#ffffff; --card2:#f4eefb; --border:#e2d6f1;
  --text:#1b1028; --muted:#6c5a87;
  --pw:#0786a3; --pw2:#bff4ff; --pw3:#03384a;
  --pb:#e0137f; --pb2:#ffd0ec; --pb3:#5a0636;
  --dark:#cdbbe6;
  --l1:#f7d6f0; --l2:#cdeff8; --l3:#ddd1fb;
  --shadow:0 16px 40px rgba(60,20,90,.14);
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--bg);color:var(--text);font:16px/1.5 Outfit,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-tap-highlight-color:transparent;overflow-x:hidden}
[hidden]{display:none!important}
button{font:inherit;color:inherit;cursor:pointer}
input,select{font:inherit}
a{color:var(--c)}
.muted{color:var(--muted)}
.small{font-size:.88rem}
.txtc{text-align:center}

/* ---------- Hintergrund ---------- */
.bg{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 50% -20%,var(--bg2),var(--bg) 60%)}
.blob{position:absolute;width:55vmax;height:55vmax;border-radius:50%;filter:blur(90px);opacity:.28}
:root[data-theme="light"] .blob{opacity:.18}
.b1{background:var(--p);left:-20vmax;top:-25vmax;animation:drift1 26s ease-in-out infinite alternate}
.b2{background:var(--c);right:-25vmax;top:10vh;animation:drift2 31s ease-in-out infinite alternate}
.b3{background:var(--v);left:20vw;bottom:-35vmax;animation:drift3 35s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate(18vw,12vh) scale(1.15)}}
@keyframes drift2{to{transform:translate(-14vw,20vh) scale(.9)}}
@keyframes drift3{to{transform:translate(-10vw,-14vh) scale(1.1)}}
.grid{position:absolute;inset:-50%;background-image:linear-gradient(rgba(139,92,246,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(139,92,246,.07) 1px,transparent 1px);background-size:44px 44px;transform:perspective(600px) rotateX(58deg) translateY(10%);-webkit-mask-image:linear-gradient(to top,#000 10%,transparent 60%);mask-image:linear-gradient(to top,#000 10%,transparent 60%)}
#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:70}

/* ---------- Grundbausteine ---------- */
.wrap{width:100%;max-width:1080px;margin:0 auto;padding:28px 16px 40px}
.screen{min-height:100vh;min-height:100dvh}
.title{margin:0;font:400 clamp(4.2rem,15vw,8.5rem)/.9 "Bebas Neue",Impact,sans-serif;letter-spacing:.04em;background:linear-gradient(180deg,#fff 8%,var(--p) 58%,var(--v));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,43,214,.35))}
:root[data-theme="light"] .title{background:linear-gradient(180deg,var(--v) 5%,var(--p) 70%);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 4px 14px rgba(255,43,214,.25))}
.tag0{margin:0 0 4px;font:400 1.15rem "Bebas Neue",sans-serif;letter-spacing:.25em;color:var(--c)}
.hero{text-align:center;padding:30px 0 22px;position:relative}
.sub{margin:10px 0 0;font:400 1.35rem "Bebas Neue",sans-serif;letter-spacing:.22em;color:var(--muted)}
.heropcs{display:flex;justify-content:center;align-items:flex-end;gap:4px;height:118px;margin-bottom:8px}
.heropcs .hp{width:74px;height:100px;animation:heroFloat 4.5s ease-in-out infinite}
.heropcs .hp:nth-child(1){animation-delay:-1s;width:62px;height:84px}
.heropcs .hp:nth-child(2){animation-delay:-2s}
.heropcs .hp:nth-child(3){animation-delay:-3s;width:84px;height:112px}
.heropcs .hp:nth-child(4){animation-delay:-4s}
.heropcs .hp:nth-child(5){animation-delay:-1.5s;width:62px;height:84px}
.heropcs svg{width:100%;height:100%;overflow:visible}
@keyframes heroFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.topright{position:absolute;right:0;top:12px;display:flex;gap:8px}

.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.panel{background:color-mix(in srgb,var(--card) 88%,transparent);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;flex-direction:column;animation:rise .45s both}
.panel:nth-child(2){animation-delay:.07s}.panel:nth-child(3){animation-delay:.14s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.panel h2{margin:0 0 10px;font:400 1.9rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em}
.panel p{margin:0 0 14px}
.panel .grow{flex:1}
.panel.on{border-color:color-mix(in srgb,var(--c) 45%,var(--border));box-shadow:0 0 0 1px color-mix(in srgb,var(--c) 18%,transparent),var(--shadow)}
.lab{display:block;font-size:.8rem;color:var(--muted);letter-spacing:.06em;margin:0 0 5px}
.or{display:flex;align-items:center;gap:10px;margin:14px 0 12px;color:var(--muted);font:400 1rem "Bebas Neue",sans-serif;letter-spacing:.2em}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--border)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:13px 18px;border:0;border-radius:16px;font:400 1.45rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:#fff;background:linear-gradient(90deg,var(--p),var(--v));box-shadow:0 8px 26px rgba(255,43,214,.3);transition:transform .15s,box-shadow .2s,filter .2s}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(255,43,214,.42)}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn.alt{background:var(--card2);color:var(--text);border:1px solid var(--border);box-shadow:none}
.btn.alt:hover{border-color:var(--p)}
.btn.cy{background:linear-gradient(90deg,var(--c),var(--v));box-shadow:0 8px 26px rgba(34,211,238,.28)}
.btn.red{background:linear-gradient(90deg,var(--r),var(--p))}
.btn.sm{width:auto;font-size:1.15rem;padding:9px 14px;border-radius:13px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.iconbtn{width:42px;height:42px;border-radius:13px;border:1px solid var(--border);background:var(--card);display:grid;place-items:center;font-size:1.15rem;flex:none;transition:border-color .2s,transform .15s,color .2s;position:relative}
.iconbtn:hover{border-color:var(--p);color:var(--p)}
.iconbtn:active{transform:scale(.92)}
.iconbtn:disabled{opacity:.35;cursor:not-allowed}
.iconbtn.on{border-color:var(--c);color:var(--c)}
.iconbtn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.iconbtn .t3{font:400 1.05rem/1 "Bebas Neue",sans-serif;letter-spacing:.04em}

.seg{display:flex;gap:4px;padding:4px;border-radius:13px;background:var(--card2);margin:0 0 12px}
.seg button{flex:1;border:0;background:transparent;padding:7px 6px;border-radius:10px;font:400 1.05rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--muted);white-space:nowrap}
.seg button.on{background:linear-gradient(90deg,var(--p),var(--v));color:#fff}
.sel{width:100%;padding:11px 12px;border-radius:14px;border:1px solid var(--border);background:var(--bg);color:var(--text);margin:0 0 12px;outline:0}
.sel:focus{border-color:var(--p)}
.fld{display:block;margin:0 0 12px}
.fld span{display:block;font-size:.82rem;color:var(--muted);margin:0 0 5px;letter-spacing:.04em}
.fld input,.inp{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--border);background:var(--bg);color:var(--text);outline:0}
.fld input:focus,.inp:focus{border-color:var(--p);box-shadow:0 0 0 3px rgba(255,43,214,.2)}
.inp.code{font:400 1.6rem/1 "Bebas Neue",sans-serif;letter-spacing:.3em;text-transform:uppercase;text-align:center;padding:10px}
.joinrow{display:flex;gap:8px}
.joinrow .inp{flex:1;min-width:0}
.resume{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center;margin:0 auto 18px;max-width:680px;padding:12px 16px;border-radius:18px;background:color-mix(in srgb,var(--card) 88%,transparent);border:1px solid color-mix(in srgb,var(--c) 50%,var(--border));box-shadow:0 0 22px rgba(34,211,238,.16);animation:rise .4s both}
.resume b{font:400 1.3rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--c)}
.err{color:var(--r);font-size:.85rem;margin:-4px 0 10px;min-height:0}

/* ---------- Warteraum ---------- */
.lobby{max-width:520px;margin:0 auto;text-align:center}
.bigcode{font:400 clamp(3.4rem,14vw,5.4rem)/1 "Bebas Neue",sans-serif;letter-spacing:.22em;padding-left:.22em;color:var(--c);text-shadow:0 0 26px rgba(34,211,238,.45);margin:4px 0 10px}
.waitdots{display:inline-flex;gap:6px;margin:6px 0 16px;align-self:center}
.waitdots i{width:10px;height:10px;border-radius:50%;background:var(--p);animation:wd 1.2s ease-in-out infinite}
.waitdots i:nth-child(2){animation-delay:.2s;background:var(--v)}.waitdots i:nth-child(3){animation-delay:.4s;background:var(--c)}
@keyframes wd{50%{transform:translateY(-8px);opacity:.5}}
.seatlist{display:grid;gap:8px;margin:0 0 16px;text-align:left}
.seat{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:14px;background:var(--card2);border:1px solid var(--border)}
.seat .av{width:30px;height:30px}
.seat .n{flex:1;font-weight:600}
.seat.empty{color:var(--muted);border-style:dashed}

/* ---------- Spiel-Layout ---------- */
.gbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;padding:10px 16px;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.gbrand{font:400 2rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em;background:linear-gradient(90deg,var(--p),var(--v));-webkit-background-clip:text;background-clip:text;color:transparent;border:0;padding:0;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:clip}
.ginfo{display:flex;gap:8px;flex:1;min-width:0;overflow:hidden}
.chip{padding:5px 12px;border-radius:999px;border:1px solid var(--border);font:400 1.15rem/1.2 "Bebas Neue",sans-serif;letter-spacing:.08em;background:var(--card);white-space:nowrap;color:var(--muted)}
.chip b{color:var(--c);font-weight:400}
.chip.think b{color:var(--p)}
.chip .dotp{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--p);margin-right:6px;vertical-align:1px;animation:wd 1s infinite}
.gbtns{display:flex;gap:8px}
.gmain{max-width:1180px;margin:0 auto;padding:16px 16px 28px;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;align-items:start}
.playcol{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0}

/* Spielerleisten */
.pbar{width:100%;max-width:var(--bs);display:flex;align-items:center;gap:10px;padding:8px 10px 8px 8px;border-radius:16px;background:color-mix(in srgb,var(--card) 85%,transparent);border:1px solid var(--border);transition:border-color .25s,box-shadow .25s}
.pbar.turn{border-color:color-mix(in srgb,var(--pcol) 60%,var(--border));box-shadow:0 0 18px color-mix(in srgb,var(--pcol) 22%,transparent)}
.pbar.w{--pcol:var(--pw)} .pbar.b{--pcol:var(--pb)}
.av{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--pcol) 16%,var(--card2));border:1px solid color-mix(in srgb,var(--pcol) 50%,transparent);flex:none;padding:4px}
.av svg{width:100%;height:100%}
.pinfo{flex:1;min-width:0}
.pname{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}
.pname .on{width:8px;height:8px;border-radius:50%;background:var(--g);box-shadow:0 0 8px var(--g);flex:none}
.pname .on.off{background:var(--muted);box-shadow:none}
.psub{font-size:.78rem;color:var(--muted);display:flex;align-items:center;gap:6px;min-height:18px;flex-wrap:nowrap;overflow:hidden}
.caps{display:flex;align-items:center;height:18px}
.caps svg{width:17px;height:17px;margin-right:-5px}
.adv{font:400 .95rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em;color:var(--muted);margin-left:8px}
.clock{font:400 1.75rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em;padding:6px 12px;border-radius:12px;background:var(--card2);border:1px solid var(--border);min-width:92px;text-align:center;color:var(--muted);font-variant-numeric:tabular-nums;transition:all .25s}
.clock.run{color:#fff;background:color-mix(in srgb,var(--pcol) 30%,var(--card2));border-color:var(--pcol);box-shadow:0 0 16px color-mix(in srgb,var(--pcol) 40%,transparent)}
:root[data-theme="light"] .clock.run{color:var(--text)}
.clock.low{color:var(--r)!important;border-color:var(--r)!important;animation:lowt 1s ease-in-out infinite}
@keyframes lowt{50%{box-shadow:0 0 20px rgba(255,77,109,.55)}}
.clock.none{display:none}

/* ---------- Brett (Neon-Floor) ---------- */
.playcol{--bs:min(100%,calc(100dvh - 250px),720px)}
.bwrap{width:var(--bs);position:relative;perspective:1100px}
.plane{position:relative;width:100%;aspect-ratio:1;border-radius:18px;padding:10px;background:var(--frame);box-shadow:0 0 0 1px rgba(255,255,255,.06),0 0 36px rgba(255,43,214,.28),0 0 70px rgba(34,211,238,.14),var(--shadow);transform-style:preserve-3d;transition:transform .7s cubic-bezier(.3,.8,.25,1);transform-origin:50% 100%}
.plane::before{content:"";position:absolute;inset:3px;border-radius:15px;background:var(--bg)}
.board{position:relative;width:100%;height:100%;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border-radius:9px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
.sq{position:relative;background:var(--dark)}
.sq.lt{background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--lc) 100%,#fff 12%) 0%,var(--lc) 55%,color-mix(in srgb,var(--lc) 70%,#000) 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.05),inset 0 0 14px color-mix(in srgb,var(--lg) 35%,transparent)}
.sq.lt.k1{--lc:var(--l1);--lg:var(--p)} .sq.lt.k2{--lc:var(--l2);--lg:var(--c)} .sq.lt.k3{--lc:var(--l3);--lg:var(--v)}
:root[data-theme="light"] .sq.lt{background:radial-gradient(circle at 50% 50%,#fff 0%,var(--lc) 70%)}
.sq.dk{background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--dark) 88%,var(--v)) 0%,var(--dark) 75%)}
.sq .co{position:absolute;font:600 clamp(.5rem,1.4vw,.72rem)/1 Outfit,sans-serif;color:color-mix(in srgb,var(--muted) 75%,transparent);pointer-events:none}
.sq .co.f{right:3px;bottom:2px} .sq .co.r{left:3px;top:3px}
body.nocoord .sq .co{display:none}
.sq.last::after{content:"";position:absolute;inset:0;background:color-mix(in srgb,var(--c) 30%,transparent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--c) 55%,transparent)}
.sq.sel::after{content:"";position:absolute;inset:0;background:color-mix(in srgb,var(--p) 34%,transparent);box-shadow:inset 0 0 0 3px var(--p),inset 0 0 18px var(--p)}
.sq.hint::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 3px var(--y),inset 0 0 22px var(--y);animation:hintG 1s ease-in-out 3}
@keyframes hintG{50%{opacity:.35}}
.sq.over::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 3px var(--c),inset 0 0 22px var(--c)}
.sq.check::before{content:"";position:absolute;inset:0;background:radial-gradient(circle,rgba(255,77,109,.95) 0%,rgba(255,77,109,.5) 40%,transparent 72%);animation:chk 1s ease-in-out infinite;z-index:1}
@keyframes chk{50%{opacity:.45}}
.dot{position:absolute;left:50%;top:50%;width:28%;height:28%;margin:-14% 0 0 -14%;border-radius:50%;background:var(--c);box-shadow:0 0 12px var(--c);opacity:.8;z-index:2;pointer-events:none;animation:dotIn .2s both}
.ring{position:absolute;inset:6%;border-radius:50%;border:3px solid var(--p);box-shadow:0 0 14px var(--p),inset 0 0 10px var(--p);z-index:2;pointer-events:none;animation:dotIn .2s both}
@keyframes dotIn{from{transform:scale(.3);opacity:0}}
body.nohints .dot,body.nohints .ring{display:none}

/* Figuren */
.pieces{position:absolute;left:10px;top:10px;right:10px;bottom:10px;pointer-events:none;transform-style:preserve-3d}
.pc{position:absolute;left:0;top:0;width:12.5%;height:12.5%;transform:translate(calc(var(--x)*100%),calc(var(--y)*100%));transition:transform .28s cubic-bezier(.3,.8,.25,1),opacity .3s;transform-style:preserve-3d;z-index:var(--z)}
.pc.noanim{transition:none}
.pc .pv{position:absolute;inset:4%;transition:transform .7s cubic-bezier(.3,.8,.25,1);transform-origin:50% 92%}
.pc svg{width:100%;height:100%;overflow:visible;display:block}
.pc .sh{position:absolute;left:22%;right:22%;bottom:4%;height:14%;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.6),transparent);opacity:0;transition:opacity .5s}
.pc.drag{opacity:.25}
.pc.gone{opacity:0;transition:opacity .25s}
.pc.incheck .pv{animation:kshake .5s}
@keyframes kshake{20%{translate:-4% 0}40%{translate:4% 0}60%{translate:-3% 0}80%{translate:2% 0}}
.pc.pop .pv{animation:ppop .45s cubic-bezier(.2,1.4,.4,1)}
@keyframes ppop{from{scale:.3}}
.pc.land .pv{animation:land .3s ease-out}
@keyframes land{40%{scale:1.12}}

/* flache Figuren: Neon-Silhouette */
.flat .pw .body{fill:var(--pw);stroke:color-mix(in srgb,var(--pw3) 85%,#000);stroke-width:2.6}
.flat .pb .body{fill:var(--pb);stroke:color-mix(in srgb,var(--pb3) 85%,#000);stroke-width:2.6}
.flat .pw svg{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--pw) 75%,transparent))}
.flat .pb svg{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--pb) 75%,transparent))}
.pv .det{fill:none;stroke:rgba(0,0,0,.55);stroke-width:2.6;stroke-linecap:round}
.pv .eye{fill:rgba(0,0,0,.65)}

/* 3D-Ansicht: Brett kippt, Figuren stehen aufrecht und sind plastisch */
.d3 .plane{transform:rotateX(34deg)}
.d3 .pc .pv{transform:rotateX(-34deg) scale(1.12,1.32);inset:2% 6% 6%}
.d3 .pc .sh{opacity:.9}
.d3 .pw .body{fill:url(#gw);stroke:color-mix(in srgb,var(--pw3) 80%,#000);stroke-width:1.6}
.d3 .pb .body{fill:url(#gb);stroke:color-mix(in srgb,var(--pb3) 80%,#000);stroke-width:1.6}
.d3 .pw svg{filter:drop-shadow(0 0 4px color-mix(in srgb,var(--pw) 55%,transparent))}
.d3 .pb svg{filter:drop-shadow(0 0 4px color-mix(in srgb,var(--pb) 55%,transparent))}
.d3 .pv .det{stroke:rgba(0,0,0,.35)}
.bwrap{transition:margin .7s cubic-bezier(.3,.8,.25,1)}
.d3 .bwrap{margin-top:-16%}
.d3 .sq .co{opacity:.8}

.ghost{position:fixed;left:0;top:0;z-index:80;pointer-events:none;transform:translate(-50%,-62%) scale(1.15)}
.ghost svg{width:100%;height:100%;overflow:visible}

/* Großer Text auf dem Brett (Schach / Schachmatt) */
.boardmsg{position:absolute;left:50%;top:50%;z-index:20;transform:translate(-50%,-50%);font:400 clamp(2.6rem,10vw,5.6rem)/.9 "Bebas Neue",sans-serif;letter-spacing:.06em;white-space:nowrap;pointer-events:none;background:linear-gradient(180deg,#fff 8%,var(--p) 60%,var(--v));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(255,43,214,.6)) drop-shadow(0 4px 0 rgba(0,0,0,.4));animation:bmsg 1.5s cubic-bezier(.2,1.2,.4,1) both}
.boardmsg.chk{font-size:clamp(2rem,7vw,3.6rem);background:linear-gradient(180deg,#fff 10%,var(--r) 70%);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 0 20px rgba(255,77,109,.7));animation:bmsgS .9s cubic-bezier(.2,1.2,.4,1) both}
.boardmsg.stay{animation:bmsgIn .7s cubic-bezier(.2,1.3,.4,1) both}
@keyframes bmsg{0%{opacity:0;transform:translate(-50%,-50%) scale(2.4)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(.95)}}
@keyframes bmsgS{0%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}30%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1}100%{opacity:0}}
@keyframes bmsgIn{0%{opacity:0;transform:translate(-50%,-50%) scale(2.4)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}

/* ---------- Seitenleiste ---------- */
.side{position:sticky;top:76px;padding:16px;gap:12px;animation:none}
.status{font:400 1.45rem/1.1 "Bebas Neue",sans-serif;letter-spacing:.08em;text-align:center;padding:10px;border-radius:14px;background:var(--card2);border:1px solid var(--border)}
.status.w{color:var(--pw)} .status.b{color:var(--pb)} .status.end{color:var(--y)}
.banner{padding:12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--y) 50%,var(--border));background:color-mix(in srgb,var(--y) 8%,var(--card2));text-align:center;animation:pop .3s both}
.banner b{display:block;font:400 1.25rem/1.1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--y);margin-bottom:8px}
.banner .row2{gap:8px}
.mlist{flex:1;min-height:150px;max-height:calc(100dvh - 470px);overflow:auto;border-radius:14px;background:var(--card2);border:1px solid var(--border);padding:6px;display:grid;grid-template-columns:34px 1fr 1fr;align-content:start;gap:2px;font-variant-numeric:tabular-nums;scrollbar-width:thin}
.mlist .no{color:var(--muted);font-size:.85rem;padding:5px 0 5px 6px}
.mlist .mv{padding:4px 8px;border-radius:8px;font-weight:500;cursor:pointer;border:0;background:transparent;text-align:left;font-size:.95rem}
.mlist .mv:hover{background:color-mix(in srgb,var(--v) 18%,transparent)}
.mlist .mv.cur{background:linear-gradient(90deg,color-mix(in srgb,var(--p) 40%,transparent),color-mix(in srgb,var(--v) 30%,transparent));color:#fff}
:root[data-theme="light"] .mlist .mv.cur{color:var(--text)}
.mlist .empty{grid-column:1/-1;color:var(--muted);text-align:center;padding:24px 8px;font-size:.9rem}
.mlist .res{grid-column:1/-1;text-align:center;font:400 1.2rem/1 "Bebas Neue",sans-serif;letter-spacing:.12em;color:var(--y);padding:8px 0 4px}
.nav{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.nav .iconbtn{width:100%;height:38px}
.acts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.acts .btn{font-size:1.15rem;padding:11px 8px;border-radius:13px}
.reviewing{font-size:.82rem;text-align:center;color:var(--y)}

/* Hinweisleiste */
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(20px);opacity:0;z-index:80;padding:10px 18px;border-radius:999px;background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);font-size:.95rem;transition:opacity .25s,transform .25s;pointer-events:none;max-width:calc(100vw - 32px);text-align:center}
.toast.show{opacity:1;transform:translateX(-50%)}

/* ---------- Dialoge ---------- */
.overlay{position:fixed;inset:0;z-index:75;display:grid;place-items:center;padding:16px;background:rgba(5,2,10,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:fade .2s both}
:root[data-theme="light"] .overlay{background:rgba(40,20,60,.28)}
@keyframes fade{from{opacity:0}}
.modal{position:relative;width:100%;max-width:520px;max-height:calc(100dvh - 32px);overflow:auto;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);animation:pop .3s cubic-bezier(.2,1.3,.4,1) both}
.modal.small{max-width:420px}
@keyframes pop{from{opacity:0;transform:scale(.92) translateY(10px)}}
.modal h2{margin:0 0 12px;font:400 2rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em}
.modal h3{margin:18px 0 6px;font:400 1.3rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--c)}
.modal .x{position:absolute;right:14px;top:14px;width:36px;height:36px;z-index:3}
.modal p{margin:0 0 12px}
.modal ul{margin:0 0 12px;padding-left:20px}
.modal li{margin:3px 0}
.rrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}
.rrow:last-child{border-bottom:0}
.rrow>span{font-size:.94rem}
.rrow small{display:block;color:var(--muted);font-size:.78rem}
.switch{display:flex;align-items:center;cursor:pointer;flex:none}
.switch input{position:absolute;opacity:0;pointer-events:none}
.switch i{width:46px;height:26px;border-radius:999px;background:var(--border);position:relative;flex:none;transition:.25s}
.switch i::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.25s cubic-bezier(.2,1.3,.4,1)}
.switch input:checked + i{background:linear-gradient(90deg,var(--p),var(--v));box-shadow:0 0 14px rgba(255,43,214,.4)}
.switch input:checked + i::after{transform:translateX(20px)}
.switch input:focus-visible + i{outline:2px solid var(--c);outline-offset:2px}
.note{margin:12px 0 0;padding:10px 12px;border-radius:12px;background:rgba(34,211,238,.08);border:1px solid color-mix(in srgb,var(--c) 35%,transparent);font-size:.85rem;color:var(--muted)}
kbd{padding:1px 6px;border-radius:6px;border:1px solid var(--border);background:var(--card2);font:600 .78rem Outfit,sans-serif}
.promo{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:6px 0 2px}
.promo button{min-width:0;border-radius:16px;border:1px solid var(--border);background:var(--card2);padding:10px 6px 8px;transition:transform .15s,border-color .2s,box-shadow .2s}
.promo button:hover{transform:translateY(-3px);border-color:var(--p);box-shadow:0 0 18px rgba(255,43,214,.35)}
.promo button svg{display:block;width:100%;height:auto;aspect-ratio:1;overflow:visible}
.promo span{display:block;font:400 1rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--muted);margin-top:4px}

/* Ergebnis */
.winbig{margin-top:26px!important;font:400 clamp(2.6rem,11vw,4rem)/.9 "Bebas Neue",sans-serif;letter-spacing:.05em;text-align:center;margin:4px 0 6px;background:linear-gradient(180deg,#fff 8%,var(--p) 60%,var(--v));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,43,214,.4))}
:root[data-theme="light"] .winbig{background:linear-gradient(180deg,var(--v),var(--p));-webkit-background-clip:text;background-clip:text}
.winbig.long{font-size:clamp(2.3rem,9vw,3.3rem)}
.winbig.draw{background:linear-gradient(180deg,#fff 8%,var(--c) 60%,var(--v));-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 0 22px rgba(34,211,238,.4))}
.winsub{text-align:center;font:400 1.35rem/1.2 "Bebas Neue",sans-serif;letter-spacing:.14em;color:var(--muted);margin:0 0 14px}
.winsum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 16px}
.stat{padding:10px 8px;border-radius:14px;background:var(--card2);text-align:center}
.stat b{display:block;font:400 1.7rem/1 "Bebas Neue",sans-serif;letter-spacing:.04em;color:var(--text)}
.stat span{font-size:.7rem;color:var(--muted);letter-spacing:.04em}
.stat.hl b{color:var(--p);text-shadow:0 0 14px rgba(255,43,214,.35)}
.endbtns{display:grid;gap:10px}

/* ---------- Konto & Freunde ---------- */
.topleft{position:absolute;left:0;top:12px;display:flex;gap:8px;align-items:center;z-index:2}
.accbtn{display:flex;align-items:center;gap:8px;height:42px;padding:0 14px 0 5px;border-radius:13px;border:1px solid var(--border);background:var(--card);max-width:220px;transition:border-color .2s}
.accbtn:hover{border-color:var(--p)}
.accav{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,var(--p),var(--v));color:#fff;font:400 1.2rem/1 "Bebas Neue",sans-serif;flex:none}
.accav svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round}
.accname{font:400 1.2rem/1 "Bebas Neue",sans-serif;letter-spacing:.08em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.accname small{font-size:.95rem;color:var(--c);margin-left:6px;letter-spacing:.04em}
a.iconbtn{color:inherit;text-decoration:none}
.badge{position:absolute;right:-6px;top:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--p);color:#fff;font:600 .72rem/20px Outfit,sans-serif;font-style:normal;text-align:center;box-shadow:0 0 12px rgba(255,43,214,.6);animation:pop .3s both}
.linkbtn{border:0;background:none;padding:0;color:var(--c);font:inherit;text-decoration:underline;text-underline-offset:3px}
.acchint{margin:-4px 0 12px}
.fld input:disabled{opacity:1;color:var(--c);font-weight:600;border-style:dashed}
.invites{display:grid;gap:10px;max-width:680px;margin:0 auto 18px}
.invites:empty{display:none}
.invite{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center;padding:12px 16px;border-radius:18px;background:color-mix(in srgb,var(--card) 88%,transparent);border:1px solid color-mix(in srgb,var(--p) 55%,var(--border));box-shadow:0 0 24px rgba(255,43,214,.2);animation:rise .4s both}
.invite b{font:400 1.3rem/1 "Bebas Neue",sans-serif;letter-spacing:.08em;color:var(--p)}
.invite span{color:var(--muted);font-size:.9rem}
.tabs2{margin:0 0 16px}
.frow{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:14px;background:var(--card2);border:1px solid var(--border)}
.frow+.frow{margin-top:6px}
.frow .dot2{width:9px;height:9px;border-radius:50%;background:var(--muted);flex:none;opacity:.5}
.frow .dot2.on{background:var(--g);box-shadow:0 0 8px var(--g);opacity:1}
.frow .fn{flex:1;min-width:0}
.frow .fn b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.frow .fn span{font-size:.75rem;color:var(--muted)}
.frow .btn.sm{font-size:1rem;padding:7px 11px;border-radius:11px}
.frow .iconbtn{width:34px;height:34px;border-radius:11px}
.frow .iconbtn svg{width:16px;height:16px}
.fempty{color:var(--muted);font-size:.88rem;text-align:center;padding:10px;border:1px dashed var(--border);border-radius:14px}
.prof{display:flex;align-items:center;gap:14px;margin:0 0 14px}
.prof .accav{width:56px;height:56px;border-radius:16px;font-size:2rem}
.prof h2{margin:0}
.prof .rt{font:400 1.2rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--c)}
.rchg{text-align:center;margin:-6px 0 12px;font:400 1.3rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--muted)}
.rchg b{font-weight:400}
.rchg .up{color:var(--g)} .rchg .dn{color:var(--r)}
.pname .rt{font:400 .95rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em;color:var(--c);margin-left:2px}

/* ---------- Admin-Panel ---------- */
.admwrap{max-width:1180px;margin:0 auto;padding:20px 16px 40px}
.admstats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0 0 16px}
.admstats .stat{background:color-mix(in srgb,var(--card) 88%,transparent);border:1px solid var(--border);padding:14px 8px;animation:rise .4s both}
.admstats .stat b{font-size:2.2rem}
.stat.cy b{color:var(--c);text-shadow:0 0 14px rgba(34,211,238,.35)}
.admtabs{display:flex;align-items:center;gap:12px;margin:0 0 12px}
.admtabs .seg{margin:0;min-width:260px}
.admlive{margin-left:auto;display:flex;align-items:center;gap:7px;font:400 1rem/1 "Bebas Neue",sans-serif;letter-spacing:.18em;color:var(--muted)}
.admlive i{width:8px;height:8px;border-radius:50%;background:var(--g);box-shadow:0 0 10px var(--g);animation:wd 1.6s ease-in-out infinite}
.admpanel{padding:16px;animation:none}
.admtools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px}
.admtools .seg{margin:0}
.admtools .inp{flex:1;min-width:180px;padding:10px 14px}
.admbtns{display:flex;gap:8px}
.admlist{display:grid;gap:8px}
.admrow{display:grid;grid-template-columns:150px minmax(0,1fr) 190px auto;gap:14px;align-items:center;padding:12px 14px;border-radius:16px;background:var(--card2);border:1px solid var(--border);transition:border-color .2s}
.admrow:hover{border-color:color-mix(in srgb,var(--p) 45%,var(--border))}
.admrow.user{grid-template-columns:minmax(0,1fr) 170px auto;cursor:pointer}
.admcode{font:400 1.7rem/1 "Bebas Neue",sans-serif;letter-spacing:.14em;color:var(--c);display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.pill{display:inline-block;padding:3px 9px;border-radius:999px;font:600 .68rem/1.4 Outfit,sans-serif;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--border);color:var(--muted);margin-left:6px;vertical-align:2px}
.admcode .pill{margin-left:0}
.pill.live{border-color:var(--g);color:var(--g);box-shadow:0 0 10px rgba(30,215,96,.25)}
.pill.wait{border-color:var(--y);color:var(--y)}
.pill.done{border-color:var(--v);color:color-mix(in srgb,var(--v) 70%,var(--text))}
.pill.adm{border-color:var(--c);color:var(--c)}
.pill.ban{border-color:var(--r);color:var(--r)}
.admplayers{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.admp{display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border-radius:12px;background:var(--card);border:1px solid var(--border);font-weight:600;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.admp.w{border-color:color-mix(in srgb,var(--pw) 45%,var(--border))}
.admp.b{border-color:color-mix(in srgb,var(--pb) 45%,var(--border))}
.admp em{font:400 .95rem/1 "Bebas Neue",sans-serif;font-style:normal;letter-spacing:.06em;color:var(--c)}
.admp em.g{color:var(--muted)}
.admp.empty{color:var(--muted);border-style:dashed;font-weight:400}
.admp .dot2,.admuser .dot2{width:8px;height:8px;border-radius:50%;background:var(--muted);opacity:.5;flex:none;display:inline-block}
.admp .dot2.on,.admuser .dot2.on{background:var(--g);box-shadow:0 0 8px var(--g);opacity:1}
.vs{font:400 1rem/1 "Bebas Neue",sans-serif;letter-spacing:.14em;color:var(--muted)}
.admmeta{display:flex;flex-direction:column;gap:2px;font-size:.8rem;color:var(--muted);min-width:0}
.admmeta b{font:400 1.35rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em;color:var(--text)}
.admact{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.admact .iconbtn{width:38px;height:38px}
.iconbtn.danger:hover{border-color:var(--r);color:var(--r)}
.admuser{display:flex;align-items:center;gap:12px;min-width:0}
.admuser>div{min-width:0}
.admuser b{font-weight:600}
.admuser .usub{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--muted);margin-top:3px}
.admuser .accav{width:40px;height:40px;border-radius:12px;font-size:1.4rem}
.admuacts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 4px}
.admuacts .btn{width:100%}
.modal.wide{max-width:900px}
.admh{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-right:44px}
.admroom{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.admside{display:flex;flex-direction:column}
.admside .row2{grid-template-columns:1fr}
.admml{max-height:300px;min-height:120px}
.admml .mv{cursor:default}
.admpl{display:flex;align-items:center;gap:10px;padding:8px 2px}
.admpl.w{--pcol:var(--pw)} .admpl.b{--pcol:var(--pb)}
.admpl .clock{margin-left:auto}
.admend{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.admend .btn{width:100%;font-size:1rem;padding:9px 4px}
.mini{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));aspect-ratio:1;border-radius:14px;padding:6px;background:var(--frame);box-shadow:0 0 26px rgba(255,43,214,.22)}
.msq{position:relative;background:var(--dark);display:grid;place-items:center;min-width:0;min-height:0;overflow:visible}
.msq:first-child{border-top-left-radius:8px}.msq:nth-child(8){border-top-right-radius:8px}.msq:nth-child(57){border-bottom-left-radius:8px}.msq:last-child{border-bottom-right-radius:8px}
.msq.lt{background:radial-gradient(circle,color-mix(in srgb,var(--lc) 100%,#fff 12%) 0%,var(--lc) 55%,color-mix(in srgb,var(--lc) 70%,#000) 100%)}
.msq.lt.k1{--lc:var(--l1)} .msq.lt.k2{--lc:var(--l2)} .msq.lt.k3{--lc:var(--l3)}
:root[data-theme="light"] .msq.lt{background:radial-gradient(circle,#fff 0%,var(--lc) 70%)}
.msq.last{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--c) 70%,transparent);background-color:color-mix(in srgb,var(--c) 25%,var(--dark))}
.msq svg{width:86%;height:86%;overflow:visible}

/* ---------- Responsive ---------- */
@media (max-width:980px){
  .gmain{grid-template-columns:1fr;max-width:640px;padding-top:12px}
  .playcol{--bs:min(100%,calc(100dvh - 250px),620px)}
  .side{position:static}
  .mlist{max-height:180px;min-height:90px}
}
@media (max-width:860px){
  .cards3{grid-template-columns:1fr}
  .admstats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .admrow{grid-template-columns:1fr auto;gap:10px}
  .admrow .admplayers{grid-column:1/-1;order:3}
  .admrow .admmeta{order:2;text-align:right;align-items:flex-end}
  .admrow .admact{grid-column:1/-1;order:4;justify-content:flex-start}
  .admrow.user{grid-template-columns:minmax(0,1fr) auto}
  .admrow.user .admact{display:none}
  .admroom{grid-template-columns:1fr}
}
@media (max-width:700px){
  .wrap{padding:20px 14px 32px}
  .gbar{padding:8px 10px;gap:6px}
  .gbrand{font-size:1.55rem}
  .ginfo{display:none}
  .gbtns{margin-left:auto;gap:6px}
  .iconbtn{width:38px;height:38px;border-radius:12px}
  .gmain{padding:10px 8px 24px;gap:12px}
  .playcol{--bs:100%;gap:8px}
  .plane{padding:6px;border-radius:14px}
  .pieces{left:6px;top:6px;right:6px;bottom:6px}
  .clock{font-size:1.45rem;min-width:78px;padding:5px 9px}
  .av{width:34px;height:34px}
  .topright{position:static;justify-content:center;margin-bottom:10px}
  .hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:6px}
  .hero>*{grid-column:1/-1}
  .hero .topleft{position:static;grid-column:1;grid-row:1;margin:0 0 14px;gap:6px;min-width:0}
  .hero .topright{grid-column:2;grid-row:1;margin:0 0 14px;gap:6px}
  .accbtn{padding:0 10px 0 4px;min-width:0;height:38px}
  .accav{width:30px;height:30px}
  .accname small{display:none}
  .heropcs{height:96px}
  .heropcs .hp{width:56px;height:76px}.heropcs .hp:nth-child(3){width:66px;height:90px}
}
@media (max-width:520px){
  .gbtns .opt{display:none}
  .admstats .stat b{font-size:1.7rem}
  .admtabs .seg{min-width:0;flex:1}
  .admbtns{width:100%}
  .admbtns .btn{flex:1}
  .admuacts{grid-template-columns:1fr}
  .frow{flex-wrap:wrap;row-gap:8px}
  .frow .fn{flex:1 1 calc(100% - 30px)}
  .frow .btn.sm{flex:1;margin-left:19px}
  .frow .btn.sm+.iconbtn{margin-left:0}
  .invite b,.invite span{flex-basis:100%;text-align:center}
}
@media (max-width:380px){
  .seg button{font-size:.95rem;padding:7px 3px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
