/* =========================================================
   PRAY Knack – Stylesheet
   ========================================================= */
: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;
  --cf1:#24183c; --cf2:#110a1e;
  --sh:#ff2bd6; --sd:#facc15; --ss:#b49cff; --sc:#22d3ee;
  --felt1:#1d1036; --felt2:#0b0716;
  --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;
  --cf1:#ffffff; --cf2:#f1e9fb;
  --sh:#e0137f; --sd:#c26a00; --ss:#6d28d9; --sc:#0786a3;
  --felt1:#efe4fb; --felt2:#dccbf3;
  --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}
.muted{color:var(--muted)}
.small{font-size:.88rem}
.center{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}
.wrap.narrow{max-width:640px}
.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))}
.title.big{font-size:clamp(3.4rem,12vw,5.6rem)}
.title.long{font-size:clamp(2.6rem,11vw,4.6rem)}
.title.mid{font-size:clamp(2.6rem,9vw,3.6rem)}
.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}
.hero.small{padding:20px 0 12px}
.sub{margin:10px 0 0;font:400 1.35rem "Bebas Neue",sans-serif;letter-spacing:.22em;color:var(--muted)}

.herocards{display:flex;justify-content:center;margin-bottom:10px;height:120px;--w:70px}
.herocards .card{margin:0 -10px;animation:heroFloat 4.5s ease-in-out infinite;transform-origin:50% 120%}
.herocards .card:nth-child(1){--rot:-14deg;animation-delay:-1.5s}
.herocards .card:nth-child(2){--rot:0deg;margin-top:-8px}
.herocards .card:nth-child(3){--rot:14deg;animation-delay:-3s}
@keyframes heroFloat{0%,100%{transform:rotate(var(--rot)) translateY(0)}50%{transform:rotate(var(--rot)) translateY(-10px)}}

.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)}
.panel h2{margin:0 0 10px;font:400 1.9rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em}
.panel h2 small{font-size:1.1rem;color:var(--muted);letter-spacing:.1em}
.panel p{margin:0 0 14px}
.namepanel{max-width:520px;margin:0 auto 16px;display:flex;gap:12px;align-items:flex-end}
.namepanel .fld{flex:1;margin:0}
.board{margin-top:16px}
.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,.fld select{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--border);background:var(--bg);color:var(--text);outline:none;transition:border-color .2s,box-shadow .2s}
.fld input:focus,.fld select:focus{border-color:var(--p);box-shadow:0 0 0 3px rgba(255,43,214,.18)}
.codein{text-transform:uppercase;letter-spacing:.35em;font-weight:700}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:13px 18px;border:0;border-radius:999px;font:400 1.45rem/1 "Bebas Neue",sans-serif;letter-spacing:.08em;color:#fff;background:linear-gradient(90deg,var(--p),var(--v));box-shadow:0 8px 26px rgba(255,43,214,.32);transition:transform .15s,box-shadow .2s,filter .2s,opacity .2s}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(255,43,214,.45)}
.btn:active{transform:translateY(1px) scale(.98)}
.btn.alt{background:linear-gradient(90deg,var(--v),var(--c));box-shadow:0 8px 26px rgba(34,211,238,.25)}
.btn.small{width:auto;font-size:1.15rem;padding:10px 18px}
.btn.big{font-size:1.9rem;padding:16px 24px}
.btn:disabled{opacity:.38;cursor:not-allowed;transform:none;box-shadow:none;filter:grayscale(.4)}
.ghostlink{background:none;border:0;color:var(--c);padding:10px;font-weight:600;text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(34,211,238,.4)}
.ghostlink:hover{text-decoration-color:var(--c)}
.iconbtn{width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:color-mix(in srgb,var(--card) 85%,transparent);display:grid;place-items:center;font-size:1.05rem;transition:transform .15s,border-color .2s;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);flex:none}
.iconbtn:hover{border-color:var(--p);transform:scale(1.06)}
.topbtns{position:fixed;top:12px;right:12px;display:flex;gap:8px;z-index:40}
body.ingame .topbtns{display:none}
.notice{margin:0 auto 16px;max-width:760px;padding:14px 18px;border-radius:16px;border:1px solid var(--c);background:rgba(34,211,238,.08);text-align:center;font-weight:500}
.notice.warn{border-color:var(--y);background:rgba(250,204,21,.08)}
.foot{margin-top:26px;text-align:center;color:var(--muted);font-size:.85rem;letter-spacing:.08em}
.rise{animation:rise .6s cubic-bezier(.2,.8,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* Bestenliste */
.lb{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 22px;counter-reset:lb}
.lb li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:var(--card2);counter-increment:lb}
.lb li::before{content:counter(lb);width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font:400 1rem "Bebas Neue",sans-serif;background:var(--border);flex:none}
.lb li:nth-child(1)::before{background:linear-gradient(135deg,#ffe27a,#f59e0b);color:#2b1700}
.lb li:nth-child(2)::before{background:linear-gradient(135deg,#f1f5f9,#94a3b8);color:#1e293b}
.lb li:nth-child(3)::before{background:linear-gradient(135deg,#fdba74,#b45309);color:#2b1300}
.lb .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.lb .s{font:400 1.35rem "Bebas Neue",sans-serif;color:var(--p);letter-spacing:.04em}
.lb .d{font-size:.75rem;color:var(--muted)}
.lb .empty{grid-column:1/-1;justify-content:center;color:var(--muted)}
.lb .empty::before{display:none}

/* ---------- Spielkarten ---------- */
.card{--w:74px;--col:var(--muted);position:relative;flex:none;width:var(--w);height:calc(var(--w)*1.4);border-radius:calc(var(--w)*.13);background:linear-gradient(160deg,var(--cf1),var(--cf2));border:1.5px solid color-mix(in srgb,var(--col) 62%,transparent);box-shadow:0 0 calc(var(--w)*.2) color-mix(in srgb,var(--col) 22%,transparent),0 calc(var(--w)*.08) calc(var(--w)*.22) rgba(0,0,0,.38);color:var(--col);font-family:"Bebas Neue",sans-serif;user-select:none;-webkit-user-select:none}
.card.s-h{--col:var(--sh)} .card.s-d{--col:var(--sd)} .card.s-s{--col:var(--ss)} .card.s-c{--col:var(--sc)}
.card::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(130deg,rgba(255,255,255,.12),transparent 40%);pointer-events:none}
.card .ci{position:absolute;display:flex;flex-direction:column;align-items:center;line-height:.82;font-size:calc(var(--w)*.31);letter-spacing:0}
.card .ci i{font-style:normal;font-family:"Segoe UI Symbol","Noto Sans Symbols 2","Apple Symbols",system-ui,sans-serif;font-size:.62em;margin-top:.12em}
.card .tl{top:6%;left:9%}
.card .br{bottom:6%;right:9%;transform:rotate(180deg)}
.card .cs{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--w)*.5);font-family:"Segoe UI Symbol","Noto Sans Symbols 2","Apple Symbols",system-ui,sans-serif;text-shadow:0 0 calc(var(--w)*.16) color-mix(in srgb,var(--col) 80%,transparent)}
.card .cs.fig{font-family:"Bebas Neue",sans-serif;font-size:calc(var(--w)*.62);line-height:1}
.card .cs.fig small{position:absolute;bottom:20%;font-size:.32em;font-family:"Segoe UI Symbol","Noto Sans Symbols 2",system-ui,sans-serif}
.card.back{--col:var(--p);background:repeating-linear-gradient(45deg,rgba(255,43,214,.16) 0 calc(var(--w)*.06),transparent 0 calc(var(--w)*.12)),linear-gradient(160deg,#2c1452,#120a22)}
.card.back::after{content:"P";position:absolute;inset:14%;border-radius:calc(var(--w)*.08);border:1px solid rgba(255,43,214,.35);display:grid;place-items:center;font:400 calc(var(--w)*.48)/1 "Bebas Neue",sans-serif;color:#fff;text-shadow:0 0 10px var(--p),0 0 22px var(--p)}
.card.mini{--w:28px;border-width:1px;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.card.mini .tl{top:5%;left:0;right:0;font-size:calc(var(--w)*.42)}
.card.mini .br,.card.mini .cs{display:none}
.card.mini .ci i{font-size:.72em}
.card.mini.back::after{display:none}
.card.ghost{opacity:.18;border-style:dashed;box-shadow:none;background:transparent}

/* Fliegende Karten */
.fly{position:fixed;left:0;top:0;z-index:62;pointer-events:none;transition:transform .55s cubic-bezier(.3,.8,.25,1),opacity .55s;will-change:transform}
.flip-in{animation:flipIn .45s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes flipIn{0%{transform:rotateY(90deg) scale(.8);opacity:0}100%{transform:none;opacity:1}}
.pop{animation:popIn .4s cubic-bezier(.2,1.4,.4,1) both}
@keyframes popIn{0%{transform:scale(.4);opacity:0}100%{transform:none;opacity:1}}

/* ---------- Lobby ---------- */
.lobbygrid{display:grid;grid-template-columns:1fr 1.15fr;gap:16px}
.codebox{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 16px;border-radius:18px;border:1px dashed color-mix(in srgb,var(--p) 55%,transparent);background:rgba(255,43,214,.06);margin-bottom:18px}
.codebox span{font-size:.82rem;color:var(--muted)}
.codebox b{font:400 2.6rem/1 "Bebas Neue",sans-serif;letter-spacing:.3em;color:var(--p);text-shadow:0 0 18px rgba(255,43,214,.45);flex:1}
.plist{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.plist li{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:14px;background:var(--card2);animation:rise .35s both}
.av{--pc:var(--p);position:relative;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font:400 1.35rem/1 "Bebas Neue",sans-serif;color:#fff;background:radial-gradient(circle at 30% 25%,color-mix(in srgb,var(--pc) 70%,#fff),var(--pc) 55%,color-mix(in srgb,var(--pc) 60%,#000));box-shadow:0 0 14px color-mix(in srgb,var(--pc) 45%,transparent);flex:none}
.plist .nm{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tagx{display:inline-block;padding:2px 8px;border-radius:999px;font:600 .7rem/1.4 Outfit,sans-serif;letter-spacing:.06em;border:1px solid var(--border);color:var(--muted);margin-left:6px;vertical-align:middle}
.tagx.host{border-color:var(--y);color:var(--y)}
.tagx.bot{border-color:var(--c);color:var(--c)}
.tagx.me{border-color:var(--p);color:var(--p)}
.dot{width:9px;height:9px;border-radius:50%;background:var(--g);box-shadow:0 0 8px var(--g);flex:none}
.dot.off{background:var(--muted);box-shadow:none}
.xbtn{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--muted);display:grid;place-items:center;flex:none}
.xbtn:hover{border-color:var(--r);color:var(--r)}
.rules{display:grid;gap:4px}
.rrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 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}
.rrow select{padding:8px 10px;border-radius:12px;border:1px solid var(--border);background:var(--bg);color:var(--text);max-width:56%}
.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}
.rules.ro{opacity:.75;pointer-events:none}
.lobbyact{max-width:520px;margin:20px auto 0;text-align:center}

/* ---------- 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}
.ginfo{display:flex;gap:8px;flex:1;min-width:0}
.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}
.chip b{color:var(--c);font-weight:400}
.chip.code{color:var(--muted);letter-spacing:.2em}
.gbtns{display:flex;gap:8px}
.gmain{max-width:1000px;margin:0 auto;padding:14px 16px 24px}

/* Tisch */
.felt{position:relative;height:clamp(340px,52vh,520px);margin:34px 0 14px;border-radius:50%/46%;background:radial-gradient(ellipse at 50% 35%,var(--felt1),var(--felt2) 75%);border:2px solid color-mix(in srgb,var(--p) 55%,transparent);box-shadow:0 0 0 8px color-mix(in srgb,var(--card) 80%,transparent),0 0 0 9px var(--border),0 0 60px rgba(255,43,214,.18),inset 0 0 80px rgba(139,92,246,.25)}
.felt::before{content:"";position:absolute;inset:9%;border-radius:50%;border:1px dashed color-mix(in srgb,var(--v) 35%,transparent);pointer-events:none}
.felt.shake{animation:shake .5s cubic-bezier(.36,.07,.19,.97) both}
@keyframes shake{10%,90%{transform:translate(-2px,1px)}20%,80%{transform:translate(4px,-2px)}30%,50%,70%{transform:translate(-7px,3px)}40%,60%{transform:translate(7px,-3px)}}
.tcenter{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:8px;width:66%;text-align:center;z-index:2}
.status{font:400 1.3rem/1.1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--text);min-height:1.2em}
.status b{color:var(--c);font-weight:400}
.status.knock b{color:var(--y)}
.substatus{font-size:.8rem;color:var(--muted);min-height:1.2em;margin-top:12px}
.midrow{display:flex;align-items:center;gap:14px}
.midcards{display:flex;gap:10px;--w:76px}
.midcards .card{--w:inherit;cursor:default;transition:transform .18s,box-shadow .18s}
.deck{position:relative;--w:52px;width:52px;height:73px;flex:none}
.deck .card{position:absolute;inset:0;--w:52px}
.deck .card:nth-child(2){transform:translate(3px,-3px)}
.deck span{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:6px;font:400 .95rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--muted);white-space:nowrap}
.stacks{display:flex;gap:18px}
.stacks .stk{position:relative;width:76px;height:106px;--w:76px}
.stacks .stk .card{position:absolute;inset:0;--w:76px}
.stacks .stk .card:nth-child(2){transform:translate(3px,-3px)}
.stacks .stk .card:nth-child(3){transform:translate(6px,-6px)}

/* Sitzplätze */
.seats{position:absolute;inset:0}
.seat{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:3px;width:104px;text-align:center;z-index:3;transition:left .4s,top .4s,opacity .3s,filter .3s}
.seat .av{width:46px;height:46px;font-size:1.6rem}
.seat .av .ring{position:absolute;inset:-6px;border-radius:50%;border:3px solid transparent;pointer-events:none}
.seat.turn .av .ring{border-color:var(--c);box-shadow:0 0 18px var(--c),inset 0 0 10px rgba(34,211,238,.5);animation:ringPulse 1.2s ease-in-out infinite}
@keyframes ringPulse{50%{transform:scale(1.08);opacity:.75}}
.seat .sname{max-width:100%;padding:1px 9px;border-radius:999px;background:color-mix(in srgb,var(--card) 90%,transparent);border:1px solid var(--border);font-size:.78rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seat.turn .sname{border-color:var(--c);color:var(--c)}
.seat.out{filter:grayscale(1);opacity:.45}
.seat.off .av::after{content:"";position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border-radius:50%;background:var(--muted);border:2px solid var(--bg)}
.lives{display:flex;gap:4px;align-items:center;justify-content:center;min-height:12px}
.lives i{width:9px;height:9px;border-radius:50%;background:var(--p);box-shadow:0 0 8px var(--p);transition:transform .3s,background .3s}
.lives i.lost{background:transparent;box-shadow:none;border:1.5px solid color-mix(in srgb,var(--muted) 55%,transparent)}
.lives i.pop{animation:lifePop .9s cubic-bezier(.3,1.4,.4,1) both}
@keyframes lifePop{0%{transform:scale(1);background:var(--p)}35%{transform:scale(2.4);background:var(--r);box-shadow:0 0 18px var(--r)}100%{transform:scale(1)}}
.swimtag{font:400 .85rem/1 "Bebas Neue",sans-serif;letter-spacing:.14em;color:var(--c);text-shadow:0 0 10px rgba(34,211,238,.6);animation:swimBob 2s ease-in-out infinite}
@keyframes swimBob{50%{transform:translateY(-2px)}}
.outtag{font:400 .85rem/1 "Bebas Neue",sans-serif;letter-spacing:.14em;color:var(--r)}
.seat .scards{display:flex;gap:2px;margin-top:1px}
.seat .scards .card{--w:24px}
.seat .badges{position:absolute;top:-6px;right:14px;display:flex;gap:3px}
.bdg{min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:grid;place-items:center;font:400 .85rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em}
.bdg.dl{background:var(--y);color:#2b1700}
.bdg.kn{background:linear-gradient(90deg,var(--p),var(--v));color:#fff;box-shadow:0 0 12px rgba(255,43,214,.6);animation:popIn .4s both}
.seat .sval{font:400 1.1rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em;color:var(--y)}
.seat .stimer{width:60px;height:3px;border-radius:2px;background:var(--border);overflow:hidden}
.seat .stimer i,.timer i{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--c),var(--p));transform-origin:left;transition:background .3s}
.bubble{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:4px;padding:3px 10px;border-radius:999px;background:var(--text);color:var(--bg);font:400 .95rem/1.2 "Bebas Neue",sans-serif;letter-spacing:.08em;white-space:nowrap;animation:bubble 1.8s cubic-bezier(.2,.8,.2,1) both;pointer-events:none;z-index:5}
.bubble.hot{background:linear-gradient(90deg,var(--p),var(--v));color:#fff}
@keyframes bubble{0%{opacity:0;transform:translate(-50%,8px) scale(.6)}15%{opacity:1;transform:translate(-50%,0) scale(1.08)}25%,75%{transform:translate(-50%,0) scale(1);opacity:1}100%{opacity:0;transform:translate(-50%,-10px)}}

/* Eigener Bereich */
.mearea{max-width:640px;margin:0 auto;text-align:center;padding:12px 14px 14px;border-radius:var(--radius);border:1px solid var(--border);background:color-mix(in srgb,var(--card) 88%,transparent);box-shadow:var(--shadow);transition:border-color .3s,box-shadow .3s;position:relative}
.mearea.myturn{border-color:var(--c);box-shadow:0 0 0 1px var(--c),0 0 40px rgba(34,211,238,.25),var(--shadow)}
.mehead{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.mename{font:400 1.5rem/1 "Bebas Neue",sans-serif;letter-spacing:.08em}
.meval{font:400 1.2rem/1 "Bebas Neue",sans-serif;letter-spacing:.12em;color:var(--muted)}
.meval b{font-weight:400;font-size:1.8rem;color:var(--p);text-shadow:0 0 14px rgba(255,43,214,.45);vertical-align:-2px;margin-left:4px}
.meval em{font-style:normal;color:var(--y);margin-left:6px}
.mearea .lives i{width:11px;height:11px}
.timer{height:4px;border-radius:2px;background:var(--border);overflow:hidden;margin:0 auto 8px;max-width:340px}
.timer.warn i{background:linear-gradient(90deg,var(--y),var(--r))}
.hand{display:flex;justify-content:center;gap:14px;--w:100px;padding:6px 0 4px;min-height:150px}
.hand .card,.midcards .card{position:relative}
.hand .card{--w:inherit;transition:transform .18s,box-shadow .18s,border-color .18s}
.pickable{cursor:pointer}
.pickable:hover{transform:translateY(-6px)}
.card.sel{transform:translateY(-12px) scale(1.04);border-color:var(--text);box-shadow:0 0 0 2px var(--c),0 0 26px rgba(34,211,238,.6),0 14px 26px rgba(0,0,0,.4)}
.card .pv{position:absolute;left:50%;bottom:-2px;transform:translate(-50%,50%);padding:2px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--c);color:var(--c);font:400 .95rem/1.2 "Bebas Neue",sans-serif;letter-spacing:.04em;z-index:3;white-space:nowrap}
.card .pv.up{border-color:var(--g);color:var(--g)}
.card .pv.down{border-color:var(--r);color:var(--r)}
.card .pv.top{background:var(--y);border-color:var(--y);color:#2b1700}
.hint{margin:8px 0 10px;font-size:.88rem;color:var(--muted);min-height:1.3em}
.actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.actions .btn{font-size:1.3rem;padding:12px 10px}
.actions .btn{position:relative}
.actions .btn small{position:absolute;top:-9px;right:12px;padding:1px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--c);color:var(--c);font-size:.85rem;letter-spacing:.04em;line-height:1.3}
.knockbtn{background:linear-gradient(90deg,var(--y),var(--o),var(--p))!important;color:#1b0a00!important;box-shadow:0 8px 26px rgba(250,204,21,.3)!important}
.knockbtn:not(:disabled){animation:knockGlow 2.2s ease-in-out infinite}
@keyframes knockGlow{50%{box-shadow:0 8px 34px rgba(250,204,21,.55)}}
.reacts{display:flex;justify-content:center;gap:6px;margin-top:12px;flex-wrap:wrap}
.reacts button{width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:var(--card2);font-size:1.25rem;transition:transform .15s,border-color .2s}
.reacts button:hover{transform:translateY(-3px) scale(1.08);border-color:var(--p)}
.reacts button:active{transform:scale(.9)}
.floaters{position:fixed;inset:0;pointer-events:none;z-index:55;overflow:hidden}
.float{position:absolute;font-size:2.3rem;animation:floatup 2.4s cubic-bezier(.3,.6,.4,1) forwards;text-align:center;transform:translate(-50%,0)}
.float small{display:block;font:600 .72rem Outfit,sans-serif;color:#fff;background:rgba(0,0,0,.5);padding:1px 8px;border-radius:999px;margin-top:2px;white-space:nowrap}
@keyframes floatup{0%{transform:translate(-50%,0) scale(.5);opacity:0}15%{opacity:1;transform:translate(-50%,-40px) scale(1.15)}100%{transform:translate(calc(-50% + var(--dx,0px)),-220px) scale(1);opacity:0}}

/* Rundenergebnis */
.roundres{position:absolute;inset:5% 8%;z-index:6;border-radius:28px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--border);display:flex;flex-direction:column;padding:14px 16px 12px;animation:popIn .45s cubic-bezier(.2,1.2,.4,1) both;overflow:hidden}
.roundres h3{margin:0;font:400 1.7rem/1 "Bebas Neue",sans-serif;letter-spacing:.08em;text-align:center}
.roundres h3 b{font-weight:400;color:var(--y)}
.roundres .rlist{list-style:none;margin:10px 0 8px;padding:0;display:grid;gap:5px;overflow:auto;flex:1;align-content:start}
.roundres li{display:flex;align-items:center;gap:10px;padding:5px 10px;border-radius:12px;background:var(--card2);animation:rise .35s both}
.roundres li .av{width:28px;height:28px;font-size:1.05rem}
.roundres li .nm{flex:1;min-width:0;text-align:left;font-weight:600;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.roundres li .cs3{display:flex;gap:3px}
.roundres li .cs3 .card{--w:26px}
.roundres li .vv{width:54px;text-align:right;font:400 1.35rem/1 "Bebas Neue",sans-serif;color:var(--text)}
.roundres li .vv small{display:block;font-size:.7rem;letter-spacing:.08em;color:var(--y)}
.roundres li .ls{width:96px;text-align:right;font:400 1rem/1 "Bebas Neue",sans-serif;letter-spacing:.08em}
.roundres li.lose{background:color-mix(in srgb,var(--r) 14%,var(--card2));box-shadow:inset 3px 0 0 var(--r)}
.roundres li.best{box-shadow:inset 3px 0 0 var(--g)}
.ls .l{color:var(--r)} .ls .s{color:var(--c)} .ls .o{color:var(--r);text-shadow:0 0 10px rgba(255,77,109,.6)}
.rbar{height:4px;border-radius:2px;background:var(--border);overflow:hidden}
.rbar i{display:block;height:100%;background:linear-gradient(90deg,var(--p),var(--c));transform-origin:left}
.rnext{font-size:.75rem;color:var(--muted);text-align:center;margin-top:5px}

/* Kombi-Banner */
.combo{position:fixed;inset:0;z-index:65;display:grid;place-content:center;text-align:center;pointer-events:none;opacity:0}
.combo.show{animation:comboIn 2.1s cubic-bezier(.2,.8,.2,1) both}
.combo .ctext{font:400 clamp(4.5rem,20vw,12rem)/.9 "Bebas Neue",sans-serif;letter-spacing:.04em;color:#fff;text-shadow:0 0 18px var(--cc,var(--p)),0 0 46px var(--cc,var(--p)),0 0 90px var(--cc,var(--p));-webkit-text-stroke:2px var(--cc,var(--p))}
.combo .csub{font:400 clamp(1.4rem,5vw,2.4rem) "Bebas Neue",sans-serif;letter-spacing:.2em;color:var(--cc,var(--p));margin-top:6px}
.combo.show::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--cc,var(--p)) 30%,transparent),transparent 60%);animation:flash 2.1s ease-out both;z-index:-1}
@keyframes comboIn{0%{opacity:0;transform:scale(2.4) rotate(-4deg);filter:blur(12px)}14%{opacity:1;transform:scale(.94) rotate(0);filter:none}22%{transform:scale(1.04)}30%,78%{transform:scale(1);opacity:1}100%{opacity:0;transform:scale(1.15) translateY(-30px)}}
@keyframes flash{0%{opacity:0}12%{opacity:1}100%{opacity:0}}

/* Endbildschirm */
.podium{display:flex;justify-content:center;align-items:flex-end;gap:10px;margin:18px 0 18px}
.pod{display:flex;flex-direction:column;align-items:center;gap:6px;width:31%;max-width:160px;animation:podIn .7s both;animation-delay:var(--d)}
@keyframes podIn{0%{opacity:0;transform:translateY(20px)}50%{transform:translateY(-6px) rotate(-6deg)}100%{opacity:1;transform:none}}
.pod .av{width:54px;height:54px;font-size:1.9rem}
.pod.p1 .av{width:66px;height:66px;font-size:2.3rem}
.pod .pname{font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pod .bar{flex:none;width:100%;border-radius:16px 16px 6px 6px;background:linear-gradient(180deg,color-mix(in srgb,var(--pc) 85%,#fff),color-mix(in srgb,var(--pc) 45%,transparent));box-shadow:0 0 30px color-mix(in srgb,var(--pc) 45%,transparent);display:flex;flex-direction:column;align-items:center;padding-top:10px;color:#fff;transform-origin:bottom;animation:grow .9s cubic-bezier(.2,1.2,.4,1) both;animation-delay:var(--d)}
.pod .bar .pl{font:400 2.4rem/1 "Bebas Neue",sans-serif}
.pod .bar .sc{font:400 1rem/1 "Bebas Neue",sans-serif;letter-spacing:.1em;opacity:.95}
.crown{font-size:1.8rem;animation:crownBob 2s ease-in-out infinite}
@keyframes crownBob{50%{transform:translateY(-5px) rotate(6deg)}}
@keyframes grow{from{transform:scaleY(0)}}
.reslist{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px;text-align:left}
.reslist li{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:12px;background:var(--card2);animation:rise .4s both}
.reslist .rk{width:28px;font:400 1.4rem "Bebas Neue",sans-serif;color:var(--muted)}
.reslist .nm{flex:1;font-weight:600}
.reslist .ex{font-size:.78rem;color:var(--muted)}
.resact{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}

/* Modals, Toasts, Verlauf */
.overlay{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:rgba(5,2,10,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:fadeIn .2s both}
@keyframes fadeIn{from{opacity:0}}
.modal{width:100%;max-width:560px;max-height:88vh;overflow:auto;background:var(--card);border:1px solid var(--border);border-radius:24px;padding:22px;box-shadow:var(--shadow);position:relative;animation:popIn .35s cubic-bezier(.2,1.2,.4,1) both}
.modal.small{max-width:400px;text-align:center}
.modal h2{margin:0 0 10px;font:400 2rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em}
.modal h3{margin:16px 0 6px;font:400 1.3rem/1 "Bebas Neue",sans-serif;letter-spacing:.08em;color:var(--c)}
.modal ul{margin:0;padding-left:20px}
.modal li{margin:3px 0}
.modal .x{position:absolute;top:12px;right:12px}
.ktable{width:100%;border-collapse:collapse;font-size:.92rem}
.ktable td{padding:5px 8px;border-bottom:1px solid var(--border)}
.ktable td:last-child{text-align:right;font-weight:700;color:var(--p)}
.peek{display:flex;justify-content:center;gap:10px;--w:84px;margin:14px 0 6px}
.peek .card{--w:inherit}
.peekval{font:400 1.4rem "Bebas Neue",sans-serif;letter-spacing:.1em;color:var(--muted);margin-bottom:12px}
.peekval b{color:var(--p);font-weight:400;font-size:1.8rem}
.modal .resact{grid-template-columns:1fr}
.toasts{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:90;display:grid;gap:8px;width:min(92vw,420px);pointer-events:none}
.toast{padding:12px 16px;border-radius:14px;background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);font-weight:500;text-align:center;animation:toastIn .35s cubic-bezier(.2,1.2,.4,1) both}
.toast.err{border-color:var(--r)}
.toast.info{border-color:var(--c)}
.toast.admin{border-color:var(--y);background:color-mix(in srgb,var(--y) 12%,var(--card))}
.toast.hide{animation:toastOut .3s both}
@keyframes toastIn{from{opacity:0;transform:translateY(16px) scale(.95)}}
@keyframes toastOut{to{opacity:0;transform:translateY(10px)}}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(92vw,360px);z-index:75;background:var(--card);border-left:1px solid var(--border);box-shadow:-20px 0 50px rgba(0,0,0,.35);padding:18px;overflow:auto;transform:translateX(105%);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.drawer.open{transform:none}
.drawer h2{margin:0 0 12px;font:400 1.8rem/1 "Bebas Neue",sans-serif;letter-spacing:.06em}
.loglist{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.88rem}
.loglist li{padding:7px 10px;border-radius:10px;background:var(--card2);animation:rise .3s both}
.loglist .lc{display:inline-flex;gap:2px;vertical-align:middle;margin:0 2px}
.loglist .lc .card{--w:18px;border-radius:3px}
.loglist .lc .card .tl{font-size:.75rem}

/* ---------- Responsive ---------- */
@media (max-width:860px){
  .cards3{grid-template-columns:1fr}
  .lobbygrid{grid-template-columns:1fr}
  .lb{grid-template-columns:1fr}
}
@media (max-width:640px){
  .wrap{padding:22px 14px 32px}
  .gbar{padding:8px 10px;gap:8px}
  .gbrand{font-size:1.6rem}
  .chip.code{display:none}
  .gbar .iconbtn{width:36px;height:36px;font-size:.95rem}
  .gbtns{gap:6px}
  .wrap{padding-top:64px}
  .chip{font-size:1rem;padding:4px 9px}
  .gmain{padding:8px 8px 20px}
  .felt{height:clamp(300px,44vh,360px);margin-top:26px;border-radius:46%/42%;box-shadow:0 0 0 5px color-mix(in srgb,var(--card) 80%,transparent),0 0 0 6px var(--border),0 0 40px rgba(255,43,214,.15),inset 0 0 60px rgba(139,92,246,.25)}
  .tcenter{width:74%;gap:6px;top:56%}
  .midcards{--w:58px;gap:7px}
  .deck{--w:38px;width:38px;height:53px}
  .deck .card{--w:38px}
  .deck span{font-size:.8rem;margin-top:4px}
  .midrow{gap:9px}
  .status{font-size:1.08rem}
  .substatus{font-size:.72rem}
  .stacks .stk{width:56px;height:78px;--w:56px}
  .stacks .stk .card{--w:56px}
  .seat{width:78px}
  .seat .av{width:36px;height:36px;font-size:1.25rem}
  .seat .sname{font-size:.68rem;padding:0 6px}
  .seat .scards .card{--w:19px}
  .seat .badges{right:6px;top:-8px}
  .bdg{height:17px;min-width:17px;font-size:.75rem;padding:0 4px}
  .lives i{width:7px;height:7px}
  .hand{--w:84px;gap:10px;min-height:126px}
  .actions{gap:7px}
  .actions .btn{font-size:1.1rem;padding:11px 6px}
  .mearea{padding:10px 10px 12px}
  .mename{font-size:1.25rem}
  .roundres{inset:3% 3%;padding:10px 10px 8px}
  .roundres h3{font-size:1.35rem}
  .roundres li{padding:4px 8px;gap:7px}
  .roundres li .cs3 .card{--w:20px}
  .roundres li .vv{width:40px;font-size:1.15rem}
  .roundres li .ls{width:70px;font-size:.8rem;letter-spacing:.04em}
  .roundres li .av{display:none}
  .podium{margin-top:10px}
  .resact{grid-template-columns:1fr}
  .herocards{--w:58px;height:100px}
  .reacts button{width:36px;height:36px;font-size:1.1rem}
  .namepanel{flex-direction:column;align-items:stretch}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
