/* Calvia Poker – final UI per Design poker-v1 (Luca approved 15 Oct 02:10). Purple / cream / orange, Fredoka. */
@font-face{font-family:F;src:url(/assets/Fredoka.ttf);font-display:swap}
:root{--bg:#1a0f2e;--bg2:#2a1a4a;--cream:#FFF4E0;--or:#FF8A3D;--or2:#c2541a;--ink:#2b1d3a;--mut:#cbb9df;--gold:#ffc94a;--sec:#5b4677}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--bg)}
body{font-family:F,Nunito,system-ui,sans-serif;background:var(--bg);background-image:radial-gradient(circle at 30% 0,#2a1a4a 0,#22143c 50%,#1a0f2e 100%);background-attachment:fixed;color:var(--cream);min-height:100vh;-webkit-tap-highlight-color:transparent}
#app{max-width:430px;margin:0 auto;padding:14px 14px 28px}
.card{background:#ffffff10;border:2px solid #ffffff14;border-radius:18px;padding:14px}
.mt{margin-top:10px}.mt2{margin-top:14px}
button{font-family:inherit;cursor:pointer;-webkit-appearance:none}
.btn{display:block;width:100%;border:0;border-radius:16px;font:600 22px F;padding:13px;text-align:center;color:var(--ink);background:var(--or);box-shadow:0 5px 0 var(--or2);transition:transform .08s}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--or2)}
.btn.sec{background:var(--sec);color:var(--cream);font-size:18px;box-shadow:0 5px 0 #c2541a55}
.btn.ghost{background:transparent;border:2px solid #FFF4E055;box-shadow:none;color:var(--cream);font-size:16px;padding:10px}
.btn:disabled{opacity:.45;box-shadow:none;transform:none;cursor:default}
.row{display:flex;gap:8px;align-items:center}.sb{justify-content:space-between}.cen{justify-content:center}
.muted{color:var(--mut)}.small{font-size:13px}.k{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--mut);font-weight:600}
.av{border-radius:50%;object-fit:cover;border:3px solid var(--cream);background:#ffffff18;display:block}
.chip{display:inline-flex;align-items:center;gap:5px;font-weight:600;font-variant-numeric:tabular-nums}.chip:before{content:'';width:12px;height:12px;border-radius:50%;background:var(--gold);border:3px dashed #e08a00;flex:none}
.pill{background:#ffffff14;border-radius:999px;padding:5px 12px;font-size:14px;border:0;color:inherit;font-family:inherit}
.pill.or{background:var(--or);color:var(--ink)}
.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px}
input{font:500 17px F;border-radius:12px;border:0;padding:11px 12px;background:var(--cream);color:var(--ink);width:100%;min-width:0}
input:focus{outline:3px solid var(--or)}
.seg{display:flex;background:#00000030;border-radius:12px;padding:3px}.seg button{flex:1;text-align:center;padding:8px 4px;border-radius:9px;font-size:14px;border:0;background:none;color:var(--cream)}
.seg button.on{background:var(--or);color:var(--ink);font-weight:600}.seg.ro button{cursor:default}
h1{font-size:28px;line-height:1.1}h2{font-size:21px;margin-bottom:8px}
.err{color:#ff9b8a;font-size:14px;min-height:0;text-align:center}.err:not(:empty){margin-top:8px}
/* landing */
.logo{height:64px}.minis{display:flex;justify-content:center;gap:4px;margin:8px 0 14px}.minis img{width:38px;height:38px;border-width:2px;cursor:pointer}
.carousel{display:flex;justify-content:center;align-items:center;gap:12px;margin:16px 0 6px;position:relative}
.carousel .arrow{background:none;border:0;padding:6px}.carousel .big{width:140px;height:140px;border-width:4px}
.dice{position:absolute;right:0;top:0;background:none;border:0}
.steps .row{align-items:flex-start;gap:12px;margin-top:10px}.num{flex:none;width:30px;height:30px;border-radius:50%;background:var(--or);color:var(--ink);font-weight:600;display:grid;place-items:center}
.shots{display:flex;gap:8px;margin-top:18px}.shots div{flex:1;text-align:center}.shots img{width:100%;border-radius:10px;border:2px solid #ffffff22}
/* lobby */
.code{font-size:38px;letter-spacing:.18em;font-weight:600}
.plist .row{padding:7px 0;border-bottom:1px solid #ffffff12}.plist .row:last-child{border:0}
/* round */
.qtext{font-size:20px;line-height:1.25;flex:1}
.qimg{flex:none;width:104px;height:104px;border-radius:12px;object-fit:cover;background:#ffffff10}
.hints{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.hint{flex:0 1 auto;border-radius:999px;padding:5px 11px;font-size:14px;text-align:center;background:#ffffff14;color:var(--mut);line-height:1.25}
.hint.open{background:var(--or);color:var(--ink);animation:pop .3s}
/* ported rc6-p2d ring table: everyone around an oval, me at the bottom, D button, bet chips, ✓ marks */
.felt{margin-top:10px;border-radius:24px;padding:8px;background:radial-gradient(ellipse at 50% 40%,#3a2560,#24163f);border:2px solid #ffffff14}
.ring{position:relative;width:100%;aspect-ratio:1.5;margin:0 auto 26px;max-width:460px}
.ring::before{content:"";position:absolute;inset:15% 11%;border-radius:50%;background:radial-gradient(#3a2560,#2a1a4a);border:8px solid #5b4677;box-shadow:inset 0 0 0 3px #FF8A3D44,inset 0 0 30px #0006}
.potc{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;z-index:1}
.potc .chip{font-size:24px}
.seat{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:80px;text-align:center;background:#1a0f2ee6;border-radius:14px;padding:5px 2px;z-index:2;border:2px solid transparent;transition:opacity .2s}
.ring.n7 .seat,.ring.n8 .seat{width:70px}
.seat .av{width:42px;height:42px;margin:0 auto;border-width:2px}
.ring.n7 .seat .av,.ring.n8 .seat .av{width:36px;height:36px}
.seat .nm{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.seat .st{font-size:11px;color:var(--mut);min-height:14px}
.seat.me{border-color:#ffffff40}
.seat.acting{border-color:var(--or);box-shadow:0 0 0 3px #FF8A3D55,0 0 18px #FF8A3D88;animation:glow 1.4s ease-in-out infinite alternate}
.seat.folded{opacity:.45}
.seat .dbtn{position:absolute;top:-8px;left:-6px;width:22px;height:22px;border-radius:50%;background:var(--cream);color:var(--ink);font-size:12px;font-weight:700;line-height:22px}
.seat .ok{position:absolute;top:-6px;right:-4px;font-size:15px}
.seat .bet{position:absolute;left:50%;transform:translateX(-50%);bottom:-14px;background:var(--or);color:var(--ink);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700;white-space:nowrap}
.seat .bubble{position:absolute;bottom:100%;left:50%;transform:translate(-50%,-4px);background:var(--cream);color:var(--ink);border-radius:12px;padding:4px 8px;font-size:12px;width:max-content;max-width:150px;z-index:5;animation:pop .25s;line-height:1.2}
.seat .bubble:after{content:'';position:absolute;top:100%;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--cream)}
.blinds{text-align:center;font-size:12px;color:var(--mut);padding:4px 0 2px}
.guessin{font-size:34px;font-weight:600;padding:6px 12px}
.acts{display:flex;gap:8px}.acts .btn{font-size:17px;padding:13px 4px}
.stepper{display:flex;align-items:center;gap:6px;margin-top:8px}.stepper button{width:44px;height:40px;border-radius:12px;border:0;background:var(--sec);color:var(--cream);font-size:22px}
.stepper input{text-align:center;font-weight:600}
.waiting{text-align:center;padding:12px;color:var(--mut)}
/* reveal + final */
.answer{font-size:clamp(56px,20vw,88px);font-weight:600;line-height:1;color:var(--or);animation:pop .4s}
.rrow{padding:8px 10px;border-radius:12px;gap:10px}.rrow.win{background:#FF8A3D33;border:2px solid var(--or)}
.bar{height:6px;border-radius:3px;background:#ffffff18;overflow:hidden}.bar div{height:100%;background:var(--or);transition:width 1s linear}
.podium{display:flex;align-items:flex-end;gap:6px;margin-top:20px}.podium>div{flex:1;text-align:center}.podium .blk{margin-top:6px;border-radius:12px 12px 0 0;background:#ffffff18;font-size:28px;font-weight:600;padding-top:6px}
/* chat */
.chat{margin-top:14px}
.chat .msgs{max-height:150px;overflow-y:auto;display:flex;flex-direction:column;gap:5px;margin:6px 0 8px;font-size:15px}
.chat .m{display:flex;gap:6px;align-items:flex-start}.chat .m img{width:22px;height:22px;border-width:1px;flex:none}
.chat .m b{color:var(--or);font-weight:600}
.chat form{display:flex;gap:6px}.chat input{padding:9px 12px;font-size:16px}.chat .send{flex:none;border:0;border-radius:12px;background:var(--or);color:var(--ink);font-weight:600;padding:0 14px;font-size:16px}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--cream);color:var(--ink);padding:8px 14px;border-radius:12px;font-size:15px;z-index:50}
@keyframes pop{from{transform:scale(.85);opacity:.4}to{transform:none;opacity:1}}
.seat .bubble{animation:none}
@keyframes glow{from{box-shadow:0 0 0 3px #FF8A3D44}to{box-shadow:0 0 0 4px #FF8A3D77,0 0 22px #FF8A3Daa}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* desktop */
@media (min-width:1024px){
  #app{max-width:1280px;padding:24px 48px}
  .narrow{max-width:460px;margin:0 auto}
  .land{display:grid;grid-template-columns:1fr 440px;gap:48px;align-items:start;max-width:1100px;margin:30px auto 0}
  .land .intro{padding-top:30px}.land .intro h1{font-size:46px}
  .game3{display:grid;grid-template-columns:330px 1fr 340px;gap:28px;align-items:start}
  .game3 .ring{aspect-ratio:1.3;max-width:520px}.game3 .seat{width:86px}.game3 .seat .av{width:48px;height:48px}
  .qimg{width:100%;height:150px;margin-top:10px}.qwrap{display:block!important}
  .rev2{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start;max-width:1000px;margin:0 auto}
}

.seg.col{flex-direction:column;gap:3px}.seg.col button{text-align:left;padding:10px 12px;font-size:15px}
/* mobile round: question, hints, guess and actions on the first 390x844 screen */
@media (max-width:1023px){
 body[data-view=round] #app{padding:10px 12px 20px}
 body[data-view=round] .top{margin-bottom:6px}
 body[data-view=round] .card{padding:10px 12px}
 body[data-view=round] .qtext{font-size:17px}
 body[data-view=round] .qimg{width:72px;height:72px}
 body[data-view=round] .felt{margin-top:8px;padding:4px}
 body[data-view=round] .ring{aspect-ratio:1.75;margin-bottom:34px}
 body[data-view=round] .seat{width:68px;padding:3px 2px}
 body[data-view=round] .seat .av{width:30px;height:30px}
 body[data-view=round] .seat .st{min-height:0;font-size:10px}
 body[data-view=round] .blinds{padding:0;font-size:11px}
 body[data-view=round] .guessin{font-size:26px;padding:4px 10px}
 body[data-view=round] .card.mt{margin-top:8px}
 body[data-view=round] .acts .btn{font-size:16px;padding:11px 4px}
 body[data-view=round] .stepper{margin-top:6px}
}
.chat .head{display:flex;justify-content:space-between;align-items:center;cursor:pointer;background:none;border:0;color:inherit;width:100%;padding:0;font:inherit}
.chat.closed .msgs{max-height:44px;overflow:hidden}
.chat .m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat.open .m{white-space:normal}
@media (max-width:1023px){
 body[data-view=round] .felt{padding:24px 4px 4px}
 body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.5}
 body[data-view=round] .ring.n6 .seat,body[data-view=round] .ring.n7 .seat,body[data-view=round] .ring.n8 .seat{width:58px}
 body[data-view=round] .ring.n6 .seat .st,body[data-view=round] .ring.n7 .seat .st,body[data-view=round] .ring.n8 .seat .st{display:none}
 body[data-view=round] .ring.n7 .seat .av,body[data-view=round] .ring.n8 .seat .av{width:26px;height:26px}
 body[data-view=round] .seat .bubble{max-width:110px;font-size:11px}
}
.btn:disabled,.btn.sec:disabled{background:#4a4057;color:#a99bb8;box-shadow:none;opacity:1}
.av.fb{display:grid;place-items:center;font-weight:600;color:var(--ink);background:var(--cream)}

/* colourful accents (Luca 02:39, old purple-era look) */
.hint.open{background:var(--gold);color:var(--ink);text-align:left;border-radius:14px;flex:1 1 100%;font-size:15px;padding:8px 12px;box-shadow:0 3px 0 #c98f12}
.hint.locked{background:repeating-linear-gradient(135deg,#ff8a3d 0 10px,#f57a2c 10px 20px);color:#fff;font-weight:600;border-radius:12px;border:2px solid #ffb27a;flex:1 1 0}
.btn.red{background:#ef5350;color:#fff;box-shadow:0 5px 0 #a8302d}.btn.green{background:#3ccf8e;color:#103b28;box-shadow:0 5px 0 #23905f}.btn.gold{background:var(--gold);color:var(--ink);box-shadow:0 5px 0 #c98f12}
.btn.red:disabled,.btn.green:disabled,.btn.gold:disabled{background:#4a4057;color:#a99bb8;box-shadow:none}
.felt{border:4px solid #7a4a2a;box-shadow:inset 0 0 0 2px #a8683c,0 8px 24px #0006}
.potc{background:#1a0f2ecc;border-radius:14px;padding:4px 14px}.potc .chip{color:var(--gold)}
.seat .bubble.below{bottom:auto;top:100%;transform:translate(-50%,4px)}.seat .bubble.below:after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--cream)}
.quick{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:4px;scrollbar-width:none}.qc{flex:none;border:2px solid #ffb27a;background:#ff8a3d22;color:var(--cream);border-radius:999px;padding:5px 10px;font-size:13px;white-space:nowrap}
@media (max-width:1023px){ body[data-view=round] .ring{aspect-ratio:1.35} body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.2} }

.gwrap{flex:1;position:relative;min-width:0}.gwrap .guessin{font-size:36px!important;padding:6px 64px 6px 12px!important;min-height:56px}.gunit{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--ink);font-weight:600;font-size:16px;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slider{width:100%;margin-top:10px;accent-color:var(--or);height:28px}
button.pill,.seg button,.chat input,.chat .send,.qc,.dice,#chathead{min-height:44px}
.chat .head{min-height:44px}
.felt .blinds{display:none}
@media (min-width:1024px){ .narrow.rev{max-width:1000px} .rev .answer{font-size:120px} }
@media (max-width:1023px){ body[data-view=round] .ring{aspect-ratio:1.6} body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.3} body[data-view=round] .felt{padding:12px 4px 4px} .gunit{max-width:96px} }
@media (min-width:1024px){ .narrow.fin{max-width:1060px} .fin2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start} .fin2 .podium .av{transform:scale(1.15)} .fin h1{font-size:40px} }
@media (max-width:1023px){ body[data-view=round] .chat.closed .msgs{max-height:24px;margin:2px 0 6px} body[data-view=round] .chat.closed .m:not(:last-child){display:none} body[data-view=round] .chat{margin-top:8px;padding:8px 12px} body[data-view=round] .chat .head{min-height:32px} }
@media (max-width:1023px){ body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.48} }
@media (max-width:1023px){ body[data-view=round] .chat.closed .head{display:none} body[data-view=round] .chat.closed .msgs{cursor:pointer} }
.accttopbar{display:flex;justify-content:flex-end;min-height:36px}

/* in-flight action: lock buttons + spinner (QA1 N4) */
@keyframes cpspin { to { transform: rotate(360deg); } }

/* QA2: mobile seat layout – taller oval so no seat covers the pot or a neighbour (2–8 players) */
@media (max-width:1023px){
 body[data-view=round] .ring,body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.32;max-width:400px} body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.4}
}
@media (min-width:600px) and (max-width:1023px){
 body[data-view=round] .ring,body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.6;max-width:560px}
}
@media (max-width:1023px){
 body[data-view=round] .ring.n5 .seat,body[data-view=round] .ring.n6 .seat{width:62px}
 body[data-view=round] .potc{padding:2px 10px} body[data-view=round] .potc .chip{font-size:20px}
}
/* QA2: keep the round header on one line at 390 px (round pill + invite pill + timer + ✕) */
body[data-view=round] .top .pill{white-space:nowrap}
@media (max-width:420px){ body[data-view=round] .top{gap:6px} body[data-view=round] .top .row{gap:6px} body[data-view=round] #invbtn{padding:6px 9px;font-size:14px;letter-spacing:.02em} body[data-view=round] .top .pill{padding-left:9px;padding-right:9px} }

/* 16:9 desktop round (>=1024 px): table centred in the play area, seats around it, side panel right
   (question + hints on top, guess/actions + chat below). Whole round fits the viewport, no page scroll.
   Tweak via the --dk-* variables once Design's mockups land. Mobile (<1024 px) is untouched. */
@media (min-width:1024px){
 :root{--dk-side:clamp(340px,27vw,460px);--dk-gap:clamp(16px,1.6vw,32px);--dk-ring-ratio:1.7;--dk-seat:clamp(84px,6.2vw,112px);--dk-av:clamp(44px,3.3vw,64px)}
 body[data-view=round] #app{max-width:none;height:100vh;display:flex;flex-direction:column;padding:14px var(--dk-gap) 16px}
 body[data-view=round] .top{flex:none}
 body[data-view=round] .game3{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) var(--dk-side);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"t q" "t a";gap:12px var(--dk-gap);align-items:stretch}
 body[data-view=round] .gt{grid-area:t;min-width:0;min-height:0;display:flex}
 body[data-view=round] .gq{grid-area:q}
 body[data-view=round] .ga{grid-area:a;min-height:0;overflow-y:auto;display:flex;flex-direction:column;scrollbar-width:thin}
 body[data-view=round] .ga .chat{flex:1 0 auto;display:flex;flex-direction:column;margin-top:12px}
 body[data-view=round] .ga .chat .msgs{flex:1;max-height:none;min-height:44px}
 body[data-view=round] .ga .chat.closed .msgs{max-height:none}
 body[data-view=round] .felt{flex:1;margin:0;display:flex;align-items:center;justify-content:center;container-type:size;padding:12px}
 body[data-view=round] .ring{width:min(100cqw,100cqh * var(--dk-ring-ratio));aspect-ratio:var(--dk-ring-ratio);max-width:none;margin:0}
 body[data-view=round] .seat,body[data-view=round] .ring.n7 .seat,body[data-view=round] .ring.n8 .seat{width:var(--dk-seat)}
 body[data-view=round] .seat .av{width:var(--dk-av);height:var(--dk-av)}
 body[data-view=round] .ring.n7 .seat .av,body[data-view=round] .ring.n8 .seat .av{width:calc(var(--dk-av) * .85);height:calc(var(--dk-av) * .85)}
 body[data-view=round] .seat .nm{font-size:14px}
 body[data-view=round] .potc .chip{font-size:clamp(24px,2vw,36px)}
 body[data-view=round] .qtext{font-size:clamp(19px,1.35vw,24px)}
 body[data-view=round] .qimg{display:none}
}
@media (min-width:1024px) and (max-height:820px){
 body[data-view=round] .hint.open{font-size:14px;padding:6px 10px}
 body[data-view=round] .card{padding:10px 12px}
 body[data-view=round] .guessin{font-size:28px}
}
@media (min-width:1024px) and (max-width:1279px){ :root{--dk-side:320px;--dk-ring-ratio:1.25;--dk-seat:80px;--dk-av:42px} }
@media (min-width:1024px){ body[data-view=round] .gunit{max-width:130px} body[data-view=round] .gwrap .guessin{padding-right:140px!important} }
/* hint pop only on a newly opened hint (re-renders on every action used to replay it = flicker) */
.hint.open{animation:none}.hint.open.new{animation:pop .3s}
@media (min-width:1024px){ body[data-view=round] .seat .av{width:var(--dk-av)!important;height:var(--dk-av)!important} body[data-view=round] .ring.n7 .seat .av,body[data-view=round] .ring.n8 .seat .av{width:calc(var(--dk-av) * .85)!important;height:calc(var(--dk-av) * .85)!important} }
/* Design desktop-v1 03-runde: 3 columns – left question/hints/tip, centre table with the action bar below, right chat.
   .ga is display:contents so its parts (.gg tip, .gb actions, .chat) land in their own grid areas; DOM order = mobile order. */
@media (min-width:1024px){
 :root{--dk-left:clamp(300px,21vw,400px);--dk-chat:clamp(280px,21vw,400px)}
 body[data-view=round] .game3{grid-template-columns:var(--dk-left) minmax(0,1fr) var(--dk-chat);grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-areas:"q t c" "g t c" "e t c" "e b c";gap:14px var(--dk-gap)}
 body[data-view=round] .ga{display:contents}
 body[data-view=round] .gg{grid-area:g}
 body[data-view=round] .gg .card{margin-top:0}
 body[data-view=round] .gb{grid-area:b;background:#ffffff10;border:2px solid #ffffff14;border-radius:18px;padding:10px 16px 12px;max-width:760px;width:100%;justify-self:center}
 body[data-view=round] .ga>.err{grid-area:e;align-self:start}
 body[data-view=round] .ga .chat{grid-area:c;margin:0;min-height:0;overflow:hidden}
 body[data-view=round] .ga .chat .msgs{overflow-y:auto;justify-content:flex-end}
 body[data-view=round] .gq .hints{margin-top:12px}
 body[data-view=round] .felt{background:none;border:0;box-shadow:none;padding:0 0 4px}
 body[data-view=round] .gb .acts .btn{padding:12px 6px;font-size:18px}
}
@media (min-width:1024px) and (max-width:1279px){ :root{--dk-left:260px;--dk-chat:240px;--dk-ring-ratio:1.15;--dk-seat:76px;--dk-av:40px} }
.pill.kick{min-height:32px;min-width:32px;padding:4px 8px;margin-left:6px;font-size:13px;background:#ef535033}
/* Design desktop-v1 02-lobby: left players + chat, centre invite code/link/share/start, right settings */
@media (min-width:1024px){
 body[data-view=lobby] #app{max-width:none;padding:14px var(--dk-gap) 16px}
 .narrow.lob{max-width:1600px;display:grid;grid-template-columns:var(--dk-left) minmax(0,560px) var(--dk-left);justify-content:space-between;column-gap:var(--dk-gap);grid-auto-rows:auto;align-items:start}
 .lob>.top{grid-column:1/-1}
 .lob>.plist{grid-column:1;grid-row:2;margin-top:0}
 .lob>.chat{grid-column:1;grid-row:3/7;margin-top:14px}
 .lob>.lcode{grid-column:2;grid-row:2;margin-top:6vh;text-align:center;background:none;border:0}
 .lob>.lcode .code{font-size:clamp(56px,6vw,110px);margin:0 auto}
 .lob>.lcode>.row.sb{flex-direction:column;gap:12px}
 .lob>.lsp{display:none}
 .lob>.lstart{grid-column:2;grid-row:3;margin-top:24px}
 .lob>.err{grid-column:2;grid-row:4}
 .lob>.lleave{grid-column:2;grid-row:5;max-width:240px;margin:16px auto 0}
 .lob>.lset{grid-column:3;grid-row:2/7;margin-top:0}
}
/* Design desktop-v1 04-aufloesung / 05-endstand: 3 columns (left aside, centre, right chat) */
@media (min-width:1024px){
 body[data-view=reveal] #app,body[data-view=final] #app{max-width:none;padding:14px var(--dk-gap) 16px}
 .dk3{display:grid;grid-template-columns:var(--dk-left) minmax(0,1fr) var(--dk-chat);gap:var(--dk-gap);align-items:start;min-height:calc(100vh - 30px)}
 .dk3 .dkc .narrow{max-width:820px}
 .dk3 .dkr{position:sticky;top:14px;height:calc(100vh - 30px);display:flex}
 .dk3 .dkr .chat{flex:1;display:flex;flex-direction:column;margin:0}
 .dk3 .dkr .chat .msgs{flex:1;max-height:none;justify-content:flex-end}
 .dk3 .dkr .chat.closed .msgs{max-height:none}
 .dkrev .rev2{display:block;max-width:none}
 .dkrev .answer{font-size:clamp(80px,7vw,130px)}
 .dkfin .fin2{display:block}
 .dkfin .podium{max-width:560px;margin:20px auto 0}
 .dkfin .podium .blk{background:linear-gradient(#7a5aa8,#5b4677);color:var(--cream)!important}
 .dkfin .podium>div:nth-child(2) .blk{background:linear-gradient(#ff8a3d,#c2541a)}
 .dkfin #rem{max-width:420px;margin:0 auto}
 .dkfin h1{font-size:44px}
}
/* Design desktop-v1 01-landing: hero left, form card right */
@media (min-width:1024px){
 body[data-view=landing] #app{max-width:1600px;padding:14px var(--dk-gap) 24px}
 .land{grid-template-columns:minmax(0,1fr) 440px;max-width:1500px;gap:clamp(40px,5vw,96px);margin-top:6vh}
 .land .intro{padding-top:8vh;text-align:left}
 .land .intro>div{text-align:left!important}
 .land .intro .logo{height:52px}
 .land .intro .tagline{font-size:clamp(40px,4.2vw,76px)!important;line-height:1.05;color:var(--cream)!important;margin-top:18px!important}
}
@media (min-width:1024px){
 .land .intro .tagline,.land .intro>div:first-child{display:none}
 .land .steps{display:none}
 .hero{display:flex;align-items:center;gap:40px}.herot{flex:1}
 .hero h1{font-size:clamp(48px,4.6vw,84px);line-height:1.02}.hero p{font-size:19px;color:var(--mut);margin-top:16px;max-width:520px}
 .heroav{width:clamp(180px,15vw,260px)!important;height:clamp(180px,15vw,260px)!important;border:6px solid var(--or)!important;box-shadow:0 0 40px #FF8A3D55}
 .hsteps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:32px}.hsteps .num{margin-bottom:8px}.hsteps b{display:block;margin-bottom:4px}
 .land .carousel{display:none}
 .avgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0 16px}.avgrid button{background:none;border:0;padding:4px;border-radius:50%;display:grid;place-items:center}
 .avgrid button.on .av{border-color:var(--or);box-shadow:0 0 0 3px #FF8A3D66}
}
.dk3>.dkl{grid-column:1;grid-row:1}.dk3>.dkr{grid-column:3;grid-row:1}.dk3>.dkc{grid-column:2;grid-row:1;min-width:0}
.dkfin #leave{max-width:260px;margin-left:auto;margin-right:auto}
/* chat bubble above neighbouring seats (390 px, 7–8 players: a later seat painted over it) */
.seat:has(.bubble){z-index:6}
.audiobar{position:fixed;top:10px;left:10px;display:flex;gap:6px;z-index:40}.audiobar .pill.off{opacity:.45}
@media (max-width:1023px){ .audiobar{top:auto;bottom:12px;left:12px} }
.winflash{position:fixed;inset:0;pointer-events:none;z-index:60;background:radial-gradient(circle at 50% 30%,#FF8A3D44,transparent 60%);animation:flash 1.6s ease-out}
@keyframes flash{from{opacity:0}15%{opacity:1}to{opacity:0}}
.confetti{position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 46px,#ffc94a 46px 50px,transparent 50px 96px,#FF8A3D 96px 100px);-webkit-mask:linear-gradient(#000 0,transparent 100%);mask:linear-gradient(#000 0,transparent 100%);animation:fall 2.4s ease-in forwards}
@keyframes fall{from{transform:translateY(-40%)}to{transform:translateY(30%);opacity:0}}
@media (prefers-reduced-motion:reduce){.winflash{display:none}}
.confetti-cv{position:fixed;inset:0;pointer-events:none;z-index:70}
.fin .podium>div{animation:rise .7s cubic-bezier(.2,1.4,.4,1) both}.fin .podium>div:nth-child(1){animation-delay:.35s}.fin .podium>div:nth-child(2){animation-delay:.05s}.fin .podium>div:nth-child(3){animation-delay:.6s}
@keyframes rise{from{transform:translateY(60px);opacity:0}to{transform:none;opacity:1}}
.fin h1{animation:pop .6s .2s both}
.howsheet{display:flex;justify-content:center;margin:0 0 14px}
.howcard{max-width:520px;width:100%;background:#2b1d3a;border-color:var(--or)}
.langsw{display:flex;gap:4px}.langsw .pill{min-height:32px;padding:4px 10px;font-size:13px}
.audiobar{gap:8px;align-items:center}
.offline{position:fixed;top:0;left:0;right:0;z-index:90;background:#ef5350;color:#fff;text-align:center;padding:6px;font-size:14px}
@media (max-width:899px) and (max-height:900px){ .qtext{margin-bottom:4px} .hints{margin-top:4px;margin-bottom:4px} #chatin{margin-top:0} .round-actions{margin-top:6px} }
@media (min-width:1024px){ .audiobar{top:auto;bottom:12px;left:12px} }
.qvote{display:flex;align-items:center;justify-content:center;gap:8px;margin:-6px 0 12px;font-size:14px;color:var(--mut,#b9b0d0)}
.qvote .qv{background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:999px;padding:3px 10px;font-size:16px;cursor:pointer;opacity:.75}
.qvote .qv:hover{opacity:1}.qvote .qv.on{opacity:1;border-color:var(--or,#ff8a3d)}.qvote .qv:disabled:not(.on){opacity:.3;cursor:default}
.fbbox{text-align:left}.fbbox textarea{width:100%;box-sizing:border-box;margin:8px 0;border-radius:12px;padding:10px;font:inherit;font-size:15px;resize:vertical;border:0;background:#fff7e8;color:#2a1f3d}
.fbbox .fbsend{width:auto;padding:8px 18px;font-size:15px}.fbthanks{text-align:center;padding:4px 0}
@media (max-width:899px) and (max-height:900px){ .qtext{font-size:17px;line-height:1.3} .hints .hint{padding-top:6px;padding-bottom:6px} }
@media (max-width:1023px){ .audiobar{position:static;justify-content:center;margin:14px auto 18px;width:max-content} }
@media (max-width:899px) and (max-height:900px){ body[data-view=round] .ring{aspect-ratio:1.75} body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.42} }
@media (max-width:1023px){ body[data-view=round] .audiobar{position:fixed;top:50px;right:4px;left:auto;bottom:auto;margin:0;gap:4px;width:auto} body[data-view=round] .audiobar .pill{padding:4px 8px;font-size:12px} }
@media (max-width:899px) and (max-height:900px){ body[data-view=round] .ring{aspect-ratio:1.9} body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{aspect-ratio:1.6} }
.seg.lim{display:flex;flex-wrap:nowrap}.seg.lim>*{flex:1 1 0;min-width:0}
.seg.lim .limin{width:100%;min-width:44px;max-width:64px;box-sizing:border-box;text-align:center;border:0;border-radius:10px;background:#fff7e8;color:#2a1f3d;font:inherit;font-size:14px;padding:0 4px}
.seg.lim .limin.on{outline:2px solid var(--or,#ff8a3d)}
.lset .row.sb>.seg.lim{width:250px}
@media (max-width:420px){ .lset .row.sb>.seg.lim{width:220px} }
.endgame{display:block;margin:0 auto 8px;width:auto;padding:6px 16px;font-size:14px}
.catpick{display:flex;flex-wrap:wrap;gap:6px}.catchip{border:1px solid rgba(255,255,255,.18);background:transparent;color:inherit;border-radius:999px;padding:6px 11px;font:inherit;font-size:13px;cursor:pointer;line-height:1.2}
.catchip.on{background:var(--or,#ff8a3d);border-color:var(--or,#ff8a3d);color:#2a1f3d;font-weight:600}.catchip.all{font-weight:600}.catpick.ro .catchip{cursor:default}
.modes{display:grid;grid-template-columns:1fr 1fr;gap:6px}.modeb{position:relative;text-align:left;border:1px solid rgba(255,255,255,.16);background:transparent;color:inherit;border-radius:12px;padding:8px 10px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;line-height:1.25}
.modeb.on{border-color:var(--or,#ff8a3d);background:rgba(255,138,61,.16)}.modes.ro .modeb{cursor:default}
.prem{display:inline-block;margin-left:6px;font-size:9px;letter-spacing:.06em;text-transform:uppercase;padding:1px 5px;border-radius:6px;background:linear-gradient(90deg,#ffd36b,#ff8a3d);color:#2a1f3d;vertical-align:2px}
.tcols{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.tcol .k{margin-bottom:4px}
.tchip{display:flex;align-items:center;gap:6px;width:100%;border:1px solid rgba(255,255,255,.14);background:transparent;color:inherit;border-radius:10px;padding:4px 6px;margin-top:4px;font:inherit;font-size:14px;cursor:pointer;text-align:left}
.tchip span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tchip .tmv{flex:0;opacity:.5}.tchip:disabled{cursor:default}
.jackpot{margin:12px auto 0;text-align:center;padding:10px 12px;border-radius:14px;background:linear-gradient(90deg,#ffd36b33,#ff8a3d44);border:1px solid #ffb35c;font-weight:600;animation:jp .6s ease-out}
@keyframes jp{0%{transform:scale(.8);opacity:0}70%{transform:scale(1.05)}100%{transform:scale(1);opacity:1}}
.teamnote{text-align:center;font-size:15px}
.lfoot{max-width:980px;margin:22px auto 70px;padding:0 14px;text-align:center;font-size:12.5px;color:var(--mut,#b9b0d0);line-height:1.7}
.lfoot a{color:inherit;text-decoration:underline;text-underline-offset:2px}.lfoot .lfl2{margin-top:4px;opacity:.85}
.lrwrap{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}.lrbadge{display:inline-block;line-height:0}.lrbadge img{width:140px;height:auto;display:block}
.legalpage{position:fixed;inset:0;z-index:95;background:#160d26f2;overflow:auto;padding:20px 12px}
.legalcard{max-width:720px;margin:0 auto;font-size:15px;line-height:1.55}.legalcard h2{margin:0 0 10px;font-size:22px}.legalcard ul{padding-left:20px}.legalcard li{margin:6px 0}
.legalcard table{width:100%;border-collapse:collapse;font-size:13.5px;margin:6px 0}.legalcard th,.legalcard td{text-align:left;vertical-align:top;padding:6px;border-bottom:1px solid #ffffff1f}
.legalcard a{color:var(--or,#ff8a3d)}
@media (max-width:1023px){ body[data-view=round] .audiobar{display:none} }
.copybox{position:fixed;inset:0;z-index:60;background:#0009;display:flex;align-items:center;justify-content:center;padding:16px}.copybox .card{max-width:420px;width:100%}.copybox textarea{width:100%;margin-top:8px;font-size:16px;border-radius:10px;padding:8px}
.hint.mega{border:1px solid var(--gold,#f5c542);box-shadow:0 0 0 1px #f5c54233 inset}.hint.mega.open{box-shadow:0 0 0 2px #ff8a3d,0 0 14px #ff8a3d88}.hint.mega.locked b,.hint.mega.locked{color:var(--gold,#f5c542)}
/* ---------- design-v2 (Luca 15.10.): tokens + quick game, question card, green hints, hint slots, chat FAB, Für wen ---------- */
:root{--hint:#3ccf8e;--hint-ink:#0f2a1d;--hint-edge:#1f9a63;--qcard:#fff4e0;--qink:#2b1d3a;--slot:#ffffff14;--slot-edge:#ffffff33;--fab:#ff8a3d}
.qcard{background:var(--qcard);color:var(--qink);border:0;box-shadow:0 6px 0 #00000040}
.qcard .qcat{color:var(--or2)}
.qcard .qtext,body[data-view=round] .qcard .qtext{font-size:clamp(19px,2.3vw,28px);font-weight:700;line-height:1.22;margin-top:4px}
.qcard .qunit{color:#5b4677;margin-top:4px}
.hints.slots{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.hints.slots .hint.open{background:var(--hint);color:var(--hint-ink);box-shadow:0 3px 0 var(--hint-edge);border-radius:12px;flex:1 1 100%;text-align:left}
.hints.slots .hint.open.mega{background:var(--hint);border:2px solid #fff;font-weight:600}
.hints.slots .hint.locked{background:var(--slot);border:2px dashed var(--slot-edge);color:var(--mut);font-weight:500;flex:1 1 0;border-radius:12px;font-size:13px}
.hints.slots .hint.locked.mega{border-color:var(--or)}
.hints.slots .hint.ans{border-color:var(--gold);color:var(--gold)}
.bigstart{font-size:26px;padding:16px}
.quick.card .catpick{margin-top:2px}
details.adv>summary{cursor:pointer;color:var(--mut);text-align:center;padding:10px;font-size:16px;list-style:none}
details.adv>summary::-webkit-details-marker{display:none}
.lob .lstart{margin-top:12px}
.stdq .qc.av{opacity:.85}
.chatfab{display:none}
@media (max-width:1023px){
  body[data-view=round] .chatfab{display:grid;place-items:center;position:fixed;right:12px;bottom:12px;width:48px;height:48px;border-radius:50%;border:0;background:var(--fab);color:var(--ink);font-size:22px;z-index:45;box-shadow:0 4px 12px #0008}
  body[data-view=round] .chatwrap:not(.fabopen) .chat{background:none;border:0;box-shadow:none;padding:4px 56px 4px 0}
  body[data-view=round] .chatwrap:not(.fabopen) .chat>:not(.stdq){display:none}
  body[data-view=round] .chatwrap:not(.fabopen) .stdq{flex-wrap:nowrap;overflow-x:auto}
  body[data-view=round] .chatwrap.fabopen{display:block;position:fixed;left:8px;right:8px;bottom:68px;z-index:44;max-height:60vh;overflow:auto}
  body[data-view=round] .chatwrap.fabopen .chat{background:#2b1d3a;margin:0}
}
.who h2{margin:0 0 6px}.wholist{margin:4px 0 0;padding-left:18px;line-height:1.45;font-size:15px}.wholist.best li::marker{content:'✓  ';color:var(--hint)}
/* feedback-oct15 mockups (approved) */
:root{--green:#3CCF8E;--green-edge:#1f9a63;--qborder:#FF8A3D}
.btn.green{background:var(--green);color:#0f2a1d;box-shadow:0 5px 0 var(--green-edge)}
.btn.or2{background:var(--or);font-size:18px;margin-top:10px}
.qcard{background:#2a1a4a;color:var(--cream);border:2px solid var(--qborder);box-shadow:0 0 18px #ff8a3d33}
.qcard .qcat{color:var(--or)}.qcard .qunit{color:var(--mut)}.qcard .qdiff{font-size:12px}
.hints.slots .hint{flex:1 1 0;text-align:center;border-radius:10px;padding:7px 6px;font-size:13px}
.hints.slots .hint.open{flex:1 1 0;text-align:center;background:#3ccf8e22;color:var(--green);border:2px solid var(--green);box-shadow:none}
.hints.slots .hint.open.mega{background:#3ccf8e22;border:2px solid var(--green)}
.htexts{margin-top:6px;display:flex;flex-direction:column;gap:5px}
.htext{background:#3ccf8e1f;border:1px solid var(--green);color:var(--cream);border-radius:12px;padding:7px 11px;font-size:15px}.htext b{color:var(--green)}
.htext.mega{border-width:2px}
.qscreen{padding-top:8px}.qh{font-size:22px;font-weight:600}.qsel{border:2px solid var(--green)}
.pill.green{background:var(--green);color:#0f2a1d}
.qchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.qchip{background:#ffffff14;border-radius:999px;padding:5px 10px;font-size:13px}
.lsum{justify-content:center}
.advrow{display:flex;width:100%;align-items:center;gap:8px;background:#ffffff10;border:1px solid #ffffff22;border-radius:14px;padding:12px;color:var(--cream);text-align:left;font:inherit}.advrow span:last-child{margin-left:auto}
.lcode.v2{text-align:center}.lcode.v2 .code{font-size:52px;letter-spacing:.12em;margin:4px 0}.lcode.v2 .lnk{margin-top:8px}.lcode.v2 a{color:var(--or)}
.joined{text-align:center;color:var(--green);font-weight:600;margin:4px 0 8px}
.who{display:grid;grid-template-columns:1fr 1fr;gap:10px}.who .k{color:var(--green)}.wholist{font-size:13px;padding-left:16px;line-height:1.35}
.qc.plus{border:1px dashed var(--mut);background:none}.qc.plus img{vertical-align:middle;border-width:1px}
.potr{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);white-space:nowrap}
.potr{font-size:11px;color:var(--or);white-space:nowrap}
.hints.slots .hint.locked.mega{border-color:var(--or);color:#ffb27a}
@media (max-width:1023px){ body[data-view=round] .chatwrap:not(.fabopen) .stdq{flex-wrap:wrap;overflow:visible} body[data-view=round] .chatfab{background:var(--green)} }
.difflines{margin-top:6px;display:grid;gap:3px}.difflines .on{color:var(--cream)}
/* 05 hint slots (feedback-oct15 v2) */
.hints.slots .hint{min-height:40px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px}
.hints.slots .hint.locked{background:#ffffff0d;border:2px dashed #ffffff40;color:var(--cream)}
.hints.slots .hint.locked.mega{background:#ff8a3d1a;border:2px dashed var(--or);color:#ffb27a}
.hints.slots .hint.open{background:#3ccf8e1a;border:2px solid var(--green);color:var(--green)}
.hints.slots .hint.open.mega{background:#ff8a3d26;border:2px solid var(--or);color:#ffb27a}
.htext.mega{border-color:var(--or)}.htext.mega b{color:#ffb27a}

/* instant taps: no 300 ms double-tap-zoom delay */
button,a,.btn,.pill,input,label{touch-action:manipulation}
/* B1 header toggles: one isolated component on top of every view (restyle to the mockup via these vars) */
:root{--hdr-gap:6px;--hdr-pad:3px 10px;--hdr-font:13px;--hdr-h:30px;--hdr-justify:flex-start;--hdr-bg:transparent}
.audiobar.hdrtog{position:relative!important;inset:auto!important;display:flex!important;justify-content:var(--hdr-justify);align-items:center;gap:var(--hdr-gap)!important;margin:0!important;padding:6px 10px 0;width:auto!important;background:var(--hdr-bg);z-index:41}
.audiobar.hdrtog .pill{padding:var(--hdr-pad)!important;font-size:var(--hdr-font)!important;min-height:var(--hdr-h);min-width:0}
/* compact chat (bug 00:49 #2): no tall empty box, chips wrap, no dashed chip edge, collapsed row on final mobile */
.chat .msgs,body[data-view] .ga .chat .msgs,.dk3 .dkr .chat .msgs{min-height:auto}
.chat .msgs>.muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat .quick{flex-wrap:wrap;overflow:visible;padding-bottom:2px}
.chat .quick::-webkit-scrollbar{display:none}
.chat .qc.plus,.qc.plus{border-style:solid}
.chat.mini{padding-top:6px;padding-bottom:6px}.chat.mini .msgs,.chat.mini .quick,.chat.mini form{display:none}
.chat .unread{display:inline-block;min-width:20px;padding:0 6px;border-radius:999px;background:var(--or);color:var(--ink);font-size:12px;line-height:20px;text-align:center;margin-left:4px}
@media (max-width:1023px){ body[data-view=round] .chat .quick{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none} }
@media (max-width:1023px){ body[data-view=round] .quick{flex-wrap:nowrap!important;overflow-x:auto!important;scrollbar-width:none} body[data-view=round] .quick::-webkit-scrollbar{display:none} }
.qc.plus{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
/* Oct 16 #3: Schnelles Spiel – legal footer sits below the fold with breathing room */
.qscreen{min-height:calc(100svh - 24px);padding-bottom:32px}
.qscreen ~ .lfoot,body:has(.qscreen) .lfoot{margin-top:56px}
.specnote{max-width:720px;margin:6px auto 4px;padding:8px 14px;border-radius:12px;background:#ff8a3d26;border:1px solid #ff8a3d80;color:var(--cream);font-size:14.5px;text-align:center}
.fin .podium.still>div{animation:none}
/* guess field (Mobile QA 16.10, 1280): the unit sat on top of the input with padding-right:140px, so on a ~120px input the number vanished.
   Now the unit is a sibling in the same pill: the number always gets the remaining width. */
.gwrap{display:flex;align-items:center;background:var(--cream,#fff4e0);border-radius:14px;min-width:0}
.gwrap .guessin,body[data-view=round] .gwrap .guessin{flex:1 1 auto;min-width:3.2em;width:100%;padding:6px 8px 6px 12px!important;background:transparent;border-color:transparent}
.gwrap .gunit,body[data-view=round] .gwrap .gunit{position:static;transform:none;flex:0 1 auto;max-width:45%;padding-right:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gwrap:focus-within{box-shadow:0 0 0 3px #ff8a3d88}
.gwrap .guessin:focus{outline:none}
@media (min-width:1024px) and (max-width:1499px){ body[data-view=round] #gf{flex-wrap:wrap} body[data-view=round] #gf>.gwrap{flex:1 1 100%} body[data-view=round] #gf>button{flex:1 1 100%;width:100%} }
.gwrap .gunit{font-size:16px}
.gwrap .guessin,body[data-view=round] .gwrap .guessin{min-width:58%;font-size:clamp(26px,8vw,36px)!important}
.gwrap .gunit,body[data-view=round] .gwrap .gunit{max-width:42%}
@media (min-width:1024px){ .gwrap .guessin,body[data-view=round] .gwrap .guessin{font-size:30px!important} }
.gwrap .gunit,body[data-view=round] .gwrap .gunit{flex:0 0 auto}.gwrap .guessin,body[data-view=round] .gwrap .guessin{min-width:0;flex:1 1 0}

/* ===== Oct 16 design update (Luca): brand, header, Home, account buttons, landing order, chat sheet, no-scroll rounds ===== */
#app{position:relative}
.brand{margin:4px auto 0;line-height:0;text-align:center}.brandlogo{width:min(220px,62vw);height:auto;display:inline-block}
.brandwrap{text-align:center}.brandwrap .tagline{font-size:19px;font-weight:600;color:#FFE9C7;margin-top:8px;text-shadow:0 1px 6px #0008}
.brandchip{display:inline-block;vertical-align:middle;border:0;border-radius:50%}
/* header: clearer icons, Home button, account element on the same row */
.audiobar.hdrtog .pill{background:#ffffff2e!important;border:1px solid #ffffff33;color:var(--cream)}.audiobar .pill.off{opacity:.85!important}
.audiobar.hdrtog .pill.or{background:var(--or)!important;color:var(--ink);border-color:var(--or)}
.homebtn{display:inline-flex;align-items:center;gap:5px;font-weight:600}.homebtn svg{flex:none}
.accttopbar{position:absolute;top:6px;right:10px;min-height:0;z-index:42;display:flex}
.acct-two{display:flex;gap:6px}
.acct-top{background:#ffffff2e;border-color:#ffffff40;color:var(--cream);min-height:32px}.acct-top.reg{background:var(--or);color:var(--ink);border-color:var(--or);font-weight:600}
.acct-top .acct-vp{font-size:12px;color:var(--or);font-weight:600;margin-left:2px}
@media (max-width:1023px){
 .audiobar.hdrtog{padding:6px 8px 0;--hdr-gap:4px}
 .audiobar.hdrtog .pill,.langsw .pill{min-height:32px;padding:3px 8px!important;font-size:13px!important}
 .accttopbar{right:8px}.acct-top{padding:3px 9px;font-size:12.5px;gap:5px}
 .acct-top .av{width:22px!important;height:22px!important}
 .acct-top:has(.acct-vp){display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:6px;row-gap:0;text-align:left;line-height:1.1;padding:2px 10px 2px 3px}
 .acct-top:has(.acct-vp) .av{grid-row:1/3}.acct-top .acct-vp{font-size:10.5px;margin:0}
 .acct-top .acct-nm{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media (max-width:420px){ .homebtn span{display:none} .homebtn{padding:3px 9px!important} }
body[data-view=landing] .land{margin-top:10px}
/* desktop landing, top to bottom centred: logo, subheading, [panel | portrait], 3 steps, who/best, account, feedback */
@media (min-width:1024px){
 body[data-view=landing] .land{display:grid!important;grid-template-columns:440px minmax(0,440px);justify-content:center;column-gap:56px;row-gap:22px;max-width:1100px;margin:8px auto 0}
 body[data-view=landing] .land>.intro,body[data-view=landing] .land>div:not(.intro){display:contents}
 .land .brandwrap{grid-column:1/-1;order:1;text-align:center!important;display:block!important;padding:0}
 .land .brandlogo{width:min(360px,30vw)}
 .land .brandwrap .tagline{display:none}
 .herosub{margin-top:14px}.herosub .heroh{font-size:clamp(34px,3vw,48px);font-weight:700;line-height:1.1}.herosub p{font-size:18px;color:var(--mut);margin:10px auto 0;max-width:620px}
 .land .lpanel,.land>div>.card:first-child{order:2;grid-column:1;margin:0}
 .land .heroport{order:3;grid-column:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}
 .land .heroport .heroav{width:min(300px,24vw)!important;height:min(300px,24vw)!important;border:6px solid var(--or)!important;box-shadow:0 0 50px #FF8A3D55}
 .land .heroport .heroname{font-size:24px;font-weight:600}
 .land .hsteps{order:4;grid-column:1/-1;margin:0}
 .land #pubrooms{order:5;grid-column:1/-1;margin:0}
 .land .steps{display:none}
 .land #who{order:6;grid-column:1/-1;margin:0 auto;width:100%;max-width:820px}
 .land>div:not(.intro)>*:not(.card:first-child):not(.heroport):not(#pubrooms):not(.steps):not(#who){order:7;grid-column:1/-1;width:100%;max-width:820px;margin-left:auto;margin-right:auto}
 .land .hero{display:none}
}
/* chat: reactions, mobile bottom sheet, emoji bubbles */
.reacts{display:flex;gap:6px;justify-content:space-between;margin:8px 0}
.react{flex:1;min-height:44px;border-radius:14px;border:1px solid #ffffff2a;background:#ffffff14;font-size:24px;cursor:pointer;line-height:1}
.react:active{transform:scale(.92)}
.seat .bubble.react{font-size:30px;padding:2px 6px;background:none;box-shadow:none;animation:floatup 4s ease-out forwards}.seat .bubble.react:after{display:none}
@keyframes floatup{0%{opacity:0;transform:translate(-50%,6px) scale(.6)}12%{opacity:1;transform:translate(-50%,-4px) scale(1.15)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-30px) scale(1)}}
.csheet-back{position:fixed;inset:0;background:#0009;z-index:60}
.csheet{position:fixed;left:0;right:0;bottom:0;z-index:61;max-height:88dvh;overflow:auto;background:#2b1d3a;border-radius:20px 20px 0 0;padding:12px 14px calc(14px + env(safe-area-inset-bottom));box-shadow:0 -8px 30px #000a;animation:sheetup .18s ease-out}
@keyframes sheetup{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
.cs-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:17px}
.cs-msgs .m{display:flex;gap:6px;align-items:flex-start;font-size:14px;margin:3px 0}.cs-msgs{max-height:96px;overflow:auto}
.cs-k{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--or);margin:10px 0 6px;text-transform:uppercase;letter-spacing:.06em}
.cs-lines{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.cs-line{min-height:44px;border-radius:12px;border:1px solid #ff8a3d66;background:#ff8a3d1f;color:var(--cream);font:500 14.5px F,sans-serif;padding:6px 10px;text-align:left;cursor:pointer;line-height:1.2}
.cs-line:last-child:nth-child(odd){grid-column:1/-1}
.cs-std{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.csheet form{display:flex;gap:6px}.csheet #chatin{flex:1;min-width:0}
.fabdot{position:absolute;top:-3px;right:-3px;min-width:20px;height:20px;border-radius:10px;background:var(--or);color:var(--ink);font-size:12px;line-height:20px;text-align:center;padding:0 5px}
/* mobile in-game: one header row, no inline chat, table fills the rest; no page scroll (iPhone 16: 393x659 visible) */
@media (max-width:1023px){
 body[data-view=round]{min-height:0}
 body[data-view=round] #app{height:100vh;height:100dvh;display:flex;flex-direction:column;padding:4px 10px 8px;overflow:hidden}
 body[data-view=round] .audiobar.hdrtog{display:flex!important;padding:2px 0 0;flex:none}
 body[data-view=round] #musicbtn{display:none}
 body[data-view=round] .top{position:absolute;top:6px;right:10px;margin:0;z-index:42}
 body[data-view=round] .top>.row:first-child{display:none}
 body[data-view=round] .top .row{gap:5px}
 body[data-view=round] .top .pill,body[data-view=round] #invbtn,body[data-view=round] #leave{min-height:32px!important;min-width:32px!important;padding:3px 9px!important;font-size:13px!important}
 body[data-view=round] .specnote{margin:4px 0 0;padding:4px 10px;font-size:13px}
 body[data-view=round] .game3{flex:1;min-height:0;display:flex!important;flex-direction:column;margin-top:6px}
 body[data-view=round] .gq{flex:none}
 body[data-view=round] .gq .card{padding:9px 12px;margin:0}
 body[data-view=round] .qcard .qtext{font-size:17px!important;line-height:1.22;margin-top:2px}
 body[data-view=round] .hints{margin:6px 0 0!important}
 body[data-view=round] .hints .hint{padding:4px 8px!important;font-size:13px!important}
 body[data-view=round] .gt{flex:1 1 0;min-height:150px;position:relative;display:flex}
 body[data-view=round] .felt{flex:1;margin:6px 0 0!important;padding:4px!important;display:flex;align-items:center;justify-content:center;container-type:size;min-height:0}
 body[data-view=round] .ring,body[data-view=round] .ring.n6,body[data-view=round] .ring.n7,body[data-view=round] .ring.n8{width:min(100cqw,100cqh * 1.6);aspect-ratio:1.6!important;height:auto;max-width:none;margin:0!important}
 body[data-view=round] .ga{flex:none}
 body[data-view=round] .chatwrap{display:none}
 body[data-view=round] .chatfab{display:grid!important;place-items:center;position:absolute;right:2px;bottom:2px;top:auto;width:54px;height:54px;font-size:26px;background:var(--green);border:2px solid #fff6;z-index:45}
}
.csheet input{padding:9px 12px;font-size:16px}.csheet .send{flex:none;border:0;border-radius:12px;background:var(--or);color:var(--ink);font:600 16px F,sans-serif;padding:0 16px;min-height:44px}
.csheet .qc{min-height:40px}
/* mobile reveal: one screen, chat behind the 💬 button, the result table scrolls inside if there are many players */
@media (max-width:1023px){
 body[data-view=reveal] #app{height:100vh;height:100dvh;display:flex;flex-direction:column;padding:4px 10px 8px;overflow:hidden}
 body[data-view=reveal] .audiobar.hdrtog{padding:2px 0 0;flex:none} body[data-view=reveal] #musicbtn{display:none}
 body[data-view=reveal] .rev{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}
 body[data-view=reveal] .rev>.top{position:absolute;top:-38px;right:0;margin:0;gap:5px}
 body[data-view=reveal] .rev>.top .pill{padding:3px 9px;font-size:13px;min-height:32px;display:flex;align-items:center}
 body[data-view=reveal] .rev .bar{flex:none;margin:6px 0 0}
 body[data-view=reveal] .rev2{flex:none}.rev2>div{margin:6px 0 8px!important}
 body[data-view=reveal] .rev .answer{font-size:clamp(40px,13vw,60px);line-height:1}
 body[data-view=reveal] .rev2 .muted,body[data-view=reveal] .rev2>div>div{font-size:14px;margin-top:3px!important}
 body[data-view=reveal] .rev2 .srcline{font-size:11.5px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
 body[data-view=reveal] .rev>div:last-of-type{flex:1;min-height:0;display:flex;flex-direction:column}
 body[data-view=reveal] .rev .card{flex:0 1 auto;min-height:0;overflow:auto;padding:8px 10px;margin:0}
 body[data-view=reveal] .rrow{padding:4px 6px!important;margin:3px 0!important}
 body[data-view=reveal] .rrow .av{width:32px!important;height:32px!important}
 body[data-view=reveal] .rev p{margin:8px 0!important;font-size:14px}
 body[data-view=reveal] .rev .btn{min-height:46px;padding:9px;margin-top:6px}
 body[data-view=reveal] .rev .endgame{margin-top:4px!important}
 body[data-view=reveal] .chatfab{display:grid;place-items:center;position:fixed;right:10px;top:50px;width:48px;height:48px;border-radius:50%;border:2px solid #fff6;background:var(--green);font-size:24px;z-index:45;box-shadow:0 4px 12px #0008}
}
@media (max-width:1023px){
 body[data-view=final] .chatfab{display:grid;place-items:center;position:fixed;right:10px;top:50px;width:48px;height:48px;border-radius:50%;border:2px solid #fff6;background:var(--green);font-size:24px;z-index:45;box-shadow:0 4px 12px #0008}
 body[data-view=final] .fin h1{font-size:26px}
 body[data-view=final] .fin .podium{margin-top:6px}
 body[data-view=final] .fin .podium .blk{font-size:20px}
 body[data-view=final] #rem{font-size:22px!important;padding:10px!important}
}
@media (max-width:1023px){
 .accttopbar{top:20px;right:12px}
 .acct-top,.acct-two .acct-top{min-height:32px!important;padding:3px 10px;font-size:13px}
}
@media (max-width:400px){
 .audiobar.hdrtog .langsw .pill.or{display:none}
 .acct-two{gap:4px}.acct-two .acct-top{padding:3px 8px;font-size:12.5px}
}
@media (max-width:1023px){
 body[data-view=round] .seat{padding:2px 2px 3px}
 body[data-view=round] .seat .av{width:34px!important;height:34px!important}
 body[data-view=round] .seat .nm{font-size:12px;line-height:1.15}
 body[data-view=round] .seat .st{font-size:10px;min-height:12px}
 body[data-view=round] .felt{padding:6px 4px!important}
}
.seat .bubble.react,body[data-view] .seat .bubble.react,.seat .bubble.react.below{top:auto;bottom:88%;left:50%;font-size:30px!important;line-height:1;padding:0!important;background:none!important;border:0!important;box-shadow:none!important;max-width:none;width:auto;z-index:8;filter:drop-shadow(0 2px 4px #000a);animation:floatup 4s ease-out forwards!important}
.seat .bubble.react:after{display:none!important}
.qcard .pill,.gq .pill{white-space:nowrap}
@media (max-width:1023px){ body[data-view=round] .potr{font-size:9.5px;letter-spacing:.04em;white-space:nowrap} }
/* desktop in-game: header toggles share the row with the round bar, so the table gets the full height (no scroll at 1280x720) */
@media (min-width:1024px){
 body[data-view=round] .audiobar.hdrtog,body[data-view=reveal] .audiobar.hdrtog,body[data-view=final] .audiobar.hdrtog{position:absolute!important;top:14px!important;left:var(--dk-gap,24px)!important;padding:0!important}
 body[data-view=round] .top{padding-left:300px;min-height:36px}
 body[data-view=reveal] .dkl,body[data-view=final] .dkl{padding-top:46px}
 body[data-view=round] .felt{padding:0!important}
}
@media (min-width:1024px){
 body[data-view=round] .chatwrap{display:contents}
 body[data-view=round] .game3{grid-template-rows:auto auto auto minmax(0,1fr);grid-template-areas:"q t c" "g t c" "b t c" "e t c"}
 body[data-view=round] .gb{max-width:none;padding:10px 12px 12px}
 body[data-view=round] .gb .acts .btn{font-size:16px;padding:11px 4px}
 :root{--dk-ring-ratio:1.45;--dk-seat:96px;--dk-av:54px}
}
@media (min-width:1024px) and (max-width:1279px){ :root{--dk-ring-ratio:1.2;--dk-seat:80px;--dk-av:44px} }
@media (min-width:1600px){ :root{--dk-seat:110px;--dk-av:64px} }
@media (min-width:1024px) and (max-height:800px){ body[data-view=reveal] .rev .answer{font-size:84px;line-height:1} body[data-view=reveal] .rev2>div{margin:6px 0 10px!important} body[data-view=reveal] .rev p{margin:10px 0!important} }
@media (min-width:1024px){ .land .herosub,.land .herosub p{text-align:center} .land .brandwrap{margin-top:-6px} .land .lpanel .namehint{text-align:left} }
@media (min-width:1024px){
 body[data-view=round] .game3{grid-template-rows:minmax(0,max-content) auto auto 1fr}
 body[data-view=round] .gq{min-height:0;overflow-y:auto;scrollbar-width:thin}
 body[data-view=round] .ga .chat,body[data-view=round] .chatwrap .chat{min-height:0;max-height:100%}
}
@media (min-width:1024px) and (max-height:800px){
 body[data-view=round] .qcard .qtext{font-size:21px!important}
 body[data-view=round] .gg .card{padding:10px 12px}
 body[data-view=round] .gq .hints{margin-top:8px}
}
@media (min-width:1024px){
 body[data-view=reveal] #app{height:100vh;display:flex;flex-direction:column;overflow:hidden}
 body[data-view=reveal] .dk3{flex:1;min-height:0;height:100%;align-items:stretch}
 body[data-view=reveal] .dk3>*{min-height:0;overflow-y:auto;scrollbar-width:thin}
 body[data-view=reveal] .dkr{display:flex;flex-direction:column}body[data-view=reveal] .dkr .chat{flex:1;min-height:0;display:flex;flex-direction:column}
}
.accttopbar{top:20px}
@media (min-width:1024px) and (max-width:1279px){ :root{--dk-ring-ratio:1.15;--dk-seat:76px;--dk-av:40px} }
@media (max-width:1023px){
 body[data-view=round] .ring.n6 .seat,body[data-view=round] .ring.n7 .seat,body[data-view=round] .ring.n8 .seat{width:54px}
 body[data-view=round] .ring.n6 .seat .av,body[data-view=round] .ring.n7 .seat .av,body[data-view=round] .ring.n8 .seat .av{width:26px!important;height:26px!important}
 body[data-view=round] .ring.n6 .seat .nm,body[data-view=round] .ring.n7 .seat .nm,body[data-view=round] .ring.n8 .seat .nm{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 body[data-view=round] .ring.n6 .seat .chip,body[data-view=round] .ring.n7 .seat .chip,body[data-view=round] .ring.n8 .seat .chip{font-size:10px!important}
 .finrest .card{margin-top:10px;border-radius:18px!important}.finrest .row{padding:4px 0!important}
}
@media (min-width:1024px) and (max-height:800px){
 body[data-view=reveal] .rrow{padding:3px 8px!important;margin:2px 0!important;min-height:0}
 body[data-view=reveal] .rrow .av{width:30px!important;height:30px!important}
 body[data-view=reveal] .rev .btn{padding:9px}
}
@media (min-width:1024px){ body[data-view=final] .fin2>div:first-child{min-width:0} }
@media (min-width:1024px) and (max-height:800px){
 body[data-view=reveal] .rrow{padding:1px 8px!important;margin:1px 0!important}
 body[data-view=reveal] .rrow .av{width:26px!important;height:26px!important}
 body[data-view=reveal] .rrow .pill.kick{min-height:26px;min-width:26px;padding:2px 6px}
 body[data-view=reveal] .rev .answer{font-size:72px}
 body[data-view=reveal] .rev .endgame{margin-top:6px!important;padding:6px 12px}
}
/* long questions (up to ~250 chars) still fit a 360x640 phone */
@media (max-width:1023px){
 body[data-view=round] .qcard .qtext.long{font-size:15.5px!important}
 body[data-view=round] .qcard .qtext.xlong{font-size:14px!important;line-height:1.2}
 body[data-view=round] .gt{min-height:120px}
 body[data-view=round] .gb .acts.guesswait{display:none}
}
@media (min-width:1024px) and (max-height:800px){ body[data-view=reveal] .rev2 .muted{font-size:13px} body[data-view=reveal] .rev p{margin:6px 0!important} body[data-view=reveal] .rev .btn{min-height:42px;padding:7px} }
.rrow>div:nth-of-type(2){white-space:nowrap;width:auto!important;min-width:84px}
@media (min-width:1024px){ body[data-view=reveal] .rev #ready{position:sticky;bottom:0;z-index:3;box-shadow:0 -10px 20px #1a0f2e} }

/* locked avatars for guests (unlock with account) */
.avgrid button.locked{position:relative;opacity:.45;filter:grayscale(.7)}.avgrid button.locked i{position:absolute;right:-2px;bottom:-2px;font-style:normal;font-size:16px}
.avlock{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;background:none;border:1px dashed #ffffff40;border-radius:14px;color:#FFF4E0;padding:8px;margin:0 0 14px;font-size:14px;min-height:44px}
.avlockrow{display:flex;gap:2px;opacity:.5;filter:grayscale(.7)}
@media (max-width:400px){ .gwrap .gunit,body[data-view=round] .gwrap .gunit{max-width:36%;font-size:13.5px;flex:0 1 auto} }
.avreg{text-align:center;margin:-8px 0 14px;font-size:14px}
/* mobile header: >=44x44 hit area without changing the look (invisible centered pseudo-element) */
.audiobar .pill,.langsw .pill,.acct-top,.accttopbar button{position:relative}
.audiobar .pill::after,.langsw .pill::after,.acct-top::after,.accttopbar button::after{content:'';position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
@media (max-width:1023px){ .audiobar.hdrtog{--hdr-gap:11px} }
.noacct{text-align:center;margin-top:4px;color:#b9a9cc}
/* 'Für wen?' / 'So wird's am besten' (t117u): independent columns, the same gap after every bullet, marker on the first line; stacked below 600px */
.who .wholist{display:flex;flex-direction:column;gap:8px;line-height:1.4;margin-top:6px}
.who .wholist li{margin:0}
@media (max-width:599px){ .who{grid-template-columns:1fr!important;row-gap:14px!important} }
/* Logged-in mobile header (Luca 16.10.): Home, DE/EN, bell, music, inbox + account pill on ONE row; no chip in room/game screens */
.hdracct{display:none}
@media (max-width:1023px){
 .hdracct{display:flex;margin-left:auto;min-width:0}
 .hdracct .acct-top{padding:3px 10px 3px 4px;max-width:118px}.hdracct .acct-vp{display:none}.hdracct .acct-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
 body:has(.hdracct) .accttopbar,body:has(.hdracct) .lob>.top .acct-top{display:none}
 .audiobar.hdrtog{--hdr-gap:10px;padding-left:4px!important;padding-right:6px!important}
 body:has(.hdracct) .audiobar.hdrtog{width:100%!important;box-sizing:border-box}
 .lob>.top .brandchip,.rchip{display:none!important}
 .lob>.top{justify-content:flex-end}
 body[data-view=round] .hdracct,body[data-view=reveal] .hdracct{display:none}
}
@media (max-width:420px){ body[data-view=round] .invcode{display:none} body[data-view=round] #invbtn{min-width:44px} }
/* room code: copy-pastable, tap copies; >=44px tap target, same look */
.copycode{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default;cursor:copy;min-height:44px;display:block}
.lcode,.lcode .code,.lcode .k{user-select:text;-webkit-user-select:text}
body[data-view=round] .top .pill{position:relative}body[data-view=round] .top .pill::after{content:'';position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
/* M5: D badge on crowded tables sits inside the seat corner (no overlap with neighbours) */
.ring.n6 .seat .dbtn,.ring.n7 .seat .dbtn,.ring.n8 .seat .dbtn{top:-3px;left:-3px;width:16px;height:16px;line-height:16px;font-size:10px}
/* M6: 💬 at small phones: smaller and clear of the table edge (round) / timer (reveal, final) */
@media (max-width:380px){
 body[data-view=round] .chatfab{width:44px!important;height:44px!important;font-size:21px!important;right:4px!important;bottom:4px!important}
 body[data-view=reveal] .chatfab,body[data-view=final] .chatfab{top:auto!important;bottom:12px!important}
}
/* M1: 44px hit areas for remaining header/top buttons (same look) */
.top button.pill,.rev .top button{position:relative}
.top button.pill::after,.rev .top button::after{content:'';position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
/* M8: bigger tap padding for small text links */
.noacct a,.legal a,footer a,.foot a{display:inline-block;padding:12px 4px;margin:-12px -4px}
/* t115u: subtle brand-orange outline on landing content boxes */
.land .card,.land ~ .card,body[data-view=landing] .card,.fbbox{border:1.5px solid rgba(255,138,61,.45)!important}
/* t114u: desktop hero shows the character text */
.land .heroport .herostory{max-width:340px;text-align:center;color:#e6d8f5;line-height:1.45;font-size:16px}
.land .heroport .herotag{color:var(--or);font-weight:600;font-size:15px;margin-bottom:4px}
.land .heroport .herostory p{margin:0}
/* t116u: results screen in the share-card look */
.fin3{position:relative;isolation:isolate}
.fin3::before{content:'';position:absolute;inset:-20px -12px;z-index:-2;pointer-events:none;background:radial-gradient(ellipse 70% 45% at 50% 42%,rgba(255,138,61,.30),rgba(255,138,61,0) 70%)}
.finconf{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.finconf i{position:absolute;width:12px;height:5px;border-radius:2px}
.finlogo{display:block;margin:0 auto;width:120px;height:auto}@media (min-width:1024px){.finlogo{width:220px}}
.fintitle{background:linear-gradient(#ffe08a,#FF8A3D);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 8px #0006)}
.fin3 .podium>div{position:relative}
.fin3 .podium .crown{position:absolute;left:50%;transform:translate(-50%,-80%);top:0;font-size:26px;line-height:1;z-index:2}@media (min-width:1024px){.fin3 .podium .crown{font-size:40px}}
.fin3 .podium .pp1 .blk{background:linear-gradient(#ffc94a,rgba(255,201,74,.18))!important;color:#1a0f2e!important}
.fin3 .podium .pp2 .blk{background:linear-gradient(#cfd6e6,rgba(207,214,230,.15))!important;color:#1a0f2e!important}
.fin3 .podium .pp3 .blk{background:linear-gradient(#e0955a,rgba(224,149,90,.15))!important;color:#1a0f2e!important}
.fin3 .podium .av{border-width:4px!important}
@media (max-width:1023px){ body[data-view=final] .fin3 .podium{margin-top:24px!important} .fin3 .podium .crown{font-size:22px;transform:translate(-50%,-72%)} }
/* t117u: feedback box headline orange, text cream */
.fbbox>label.k,.fbbox .k{color:var(--or)!important}.fbbox .fbsub{color:var(--cream)!important;opacity:1}
/* t122u/t123u: one headline green, one body size + cream text for all home sections (mobile + desktop) */
:root{--home-text:15px}
.land .steps h2,.land .who .k,.land .acct-land h2,.land .acct-land .acct-hl,.land .fbbox .k,.land .fbbox>label.k{color:var(--green)!important}
.land .who .wholist:not(.best) li::marker{color:var(--green)}
.land .steps .row .muted,.land .steps>p,.land .who .wholist,.land .acct-land p:not(.acct-note):not(.small),.land .acct-land li,.land .acct-land .acct-txt,.land .fbbox .fbsub,.land .herosub p{font-size:var(--home-text)!important;color:var(--cream)!important;opacity:1}
.land .acct-land .acct-note{font-size:var(--home-text)!important}
.land .acct-land .small,.land .fbbox .small:not(.fbsub){color:#d9c9ee!important}
.land .hsteps .muted{font-size:var(--home-text)!important;color:var(--cream)!important}

/* t131u: one headline style for every home section (= 'So geht's') */
:root{--home-hl-size:21px}
.land .steps h2,.land .homehl,.land .fbbox>label.k.homehl{display:block;font-family:F,Nunito,system-ui,sans-serif!important;font-size:var(--home-hl-size)!important;font-weight:700!important;line-height:1.2!important;letter-spacing:normal!important;text-transform:none!important;color:var(--green)!important;margin:0 0 8px!important}
/* t147u header v2: Home · ⚙️ · Freunde · Bestenliste … account pill right */
.hdr2 .hdric{display:inline-flex;align-items:center;gap:5px;font-weight:600;position:relative;min-width:44px;justify-content:center}
.hdr2 .hdric .mbbadge{top:-5px;right:-5px}
@media (max-width:520px){ .hdr2 .hdrlbl span{display:none} }
@media (min-width:1024px){ .audiobar.hdr2{--hdr-gap:10px} }
.setrow{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:10px 4px;background:none;border:0;border-bottom:1px solid #ffffff14;color:var(--cream);text-align:left;font:inherit;cursor:pointer}
.setrow b{display:block;font-size:var(--home-text,15px);font-weight:600}.setrow small{display:block;font-size:13px;margin-top:2px}
.sw{flex:none;width:46px;height:28px;border-radius:14px;background:#ffffff30;position:relative;transition:background .15s}
.sw::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--cream);transition:left .15s}
.sw.on{background:var(--or)}.sw.on::after{left:21px}
.sethl{color:var(--green,#5fd38d)!important;margin-top:18px}.sethl:first-child{margin-top:0}
.setlang,.lbtabs{display:flex;gap:8px;margin:8px 0 4px}.setlang .pill,.lbtabs .pill{min-height:44px;padding:8px 18px;font-size:15px;flex:1;justify-content:center}
.lbrow{gap:10px;padding:8px 0;border-bottom:1px solid #ffffff12;align-items:center}.lbrow.me{background:#ff8a3d1f;border-radius:10px;padding-left:6px}
.lbn{width:28px;flex:none}.lbname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cream)}.lblvl{font-size:13px;color:var(--cream);opacity:.85;flex:none}
.lbrep{flex:none;min-height:32px;font-size:12px!important;opacity:.8}
.lbopt{display:flex;gap:10px;align-items:flex-start;margin:10px 0 12px;padding:12px;border:1px solid var(--or);border-radius:14px;color:var(--cream);cursor:pointer}
.lbopt input{width:22px;height:22px;flex:none;accent-color:var(--or);margin-top:2px}.lbopt small{display:block;font-size:13px;margin-top:3px}
.lbrepf select{width:100%;min-height:44px;border-radius:12px;padding:8px}
.hdr2 .hdrsp{flex:1 1 auto;min-width:0}
.hdr2 .hdracct{margin-left:0!important}
@media (min-width:1024px){ .hdr2 .hdracct{display:flex} body:has(.hdr2 .hdracct) .accttopbar{display:none} }
.setvol{display:flex;align-items:center;gap:12px;min-height:56px;color:var(--cream)}.setvol span{font-weight:600}.setvol input{flex:1;accent-color:var(--or);min-height:44px}.setvol b{width:44px;text-align:right;font-weight:500}
.lbsub{margin-top:4px}.lbsub .pill{min-height:44px;font-size:14px}
@media (min-width:1024px){ body:has(.hdr2 .hdracct) .audiobar.hdr2{width:100%!important;box-sizing:border-box;padding-right:16px!important} body:has(.hdr2 .hdracct) .lob>.top .acct-top{display:none} .hdr2 .hdracct .acct-vp{display:none} }
.lbsub{gap:6px}.lbsub .pill{background:transparent!important;border:1px solid #ffffff33;color:var(--cream);min-height:44px;font-size:14px}.lbsub .pill.or{border:2px solid var(--or);color:var(--or)}
/* t153u customisation (v4 CalviaUnlocks port): table designs on .felt, avatar rings on .av.fr-*, unlock celebration */
html[data-skin=classic] .felt{background:radial-gradient(ellipse at 50% 40%,#16533d,#0c3326)}html[data-skin=classic] .ring::before{background:radial-gradient(#1F6B4F,#14503b);border-color:#6b4a2a}
html[data-skin=midnight] .felt{background:radial-gradient(ellipse at 50% 40%,#1c2050,#0a0b24)}html[data-skin=midnight] .ring::before{background:radial-gradient(#2a2f6b,#0f1030);border-color:#3b3f7a}
html[data-skin=neon] .felt{background:radial-gradient(ellipse at 50% 40%,#0b2a20,#07060f);box-shadow:0 0 18px rgba(57,231,95,.3)}html[data-skin=neon] .ring::before{background:radial-gradient(#0e3a2a,#0D0A17);border-color:#39E75F;box-shadow:0 0 16px rgba(57,231,95,.6),inset 0 0 20px rgba(57,231,95,.25)}
html[data-skin=sunset] .felt{background:linear-gradient(160deg,#5a2a3a,#2a1240)}html[data-skin=sunset] .ring::before{background:linear-gradient(160deg,#ff8a3d,#c2307a 60%,#3b1d5e);border-color:#7a2f5a}
html[data-skin=gold] .felt{background:radial-gradient(ellipse at 50% 40%,#4a3608,#2a1e05);border-color:#ffc94a66}html[data-skin=gold] .ring::before{background:radial-gradient(circle at 40% 35%,#8a6a1a,#4a3608);border-color:#d9a520;box-shadow:inset 0 0 0 3px #ffe9a066,inset 0 0 30px #0006}
.av.fr-ring{box-shadow:0 0 0 3px #39E75F}
.av.fr-glow{box-shadow:0 0 0 2px #39E75F,0 0 12px 3px rgba(57,231,95,.6)}
.av.fr-flame{box-shadow:0 0 0 2px #ff8a3d,0 0 12px 3px rgba(255,138,61,.7);animation:unl-flame 1.2s ease-in-out infinite alternate}
.av.fr-crown{box-shadow:0 0 0 2px #17132A,0 0 0 5px #ffc94a,0 0 12px 4px rgba(255,201,74,.45)}
@keyframes unl-flame{from{box-shadow:0 0 0 2px #ff8a3d,0 0 8px 2px rgba(255,138,61,.5)}to{box-shadow:0 0 0 2px #ff5a1e,0 0 16px 5px rgba(255,80,30,.85)}}
.unl-sec{margin-top:22px}.unl-h{margin:0 0 6px;font-size:21px;font-weight:700;color:var(--green,#3ccf8e)}.unl-sub{font-size:var(--home-text,15px);color:#FFF4E0;margin:0 0 6px}
.unl-row-title{margin:12px 0 6px;font-size:13px;color:#3ccf8e;text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.unl-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.unl-tile{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;min-height:44px;background:#1a1230;border:2px solid #ffffff14;border-radius:16px;color:#FFF4E0;font:inherit;cursor:pointer;text-align:center}
.unl-tile.is-on{border-color:#3ccf8e}.unl-tile.is-locked{opacity:.55;cursor:default;filter:grayscale(.6)}
.unl-name{font-weight:700;font-size:14px}.unl-hint{font-size:11px;color:#cbb9df;line-height:1.2}.unl-on{font-size:12px;color:#3ccf8e;font-weight:700}.unl-tap{font-size:12px;color:#FF8A3D;font-weight:600}
.unl-sw{display:block;width:44px;height:44px;border-radius:50%;background:#2a1d48;box-sizing:border-box}.unl-sw-big{width:84px;height:84px}
.unl-sw-skin-calvia{background:radial-gradient(circle,#3a2560,#24163f)}.unl-sw-skin-classic{background:radial-gradient(circle,#1F6B4F,#14503b)}.unl-sw-skin-midnight{background:radial-gradient(circle,#2a2f6b,#0f1030)}
.unl-sw-skin-neon{background:radial-gradient(circle,#0e3a2a,#0D0A17);box-shadow:0 0 0 2px #39E75F inset}.unl-sw-skin-sunset{background:linear-gradient(160deg,#ff8a3d,#c2307a 60%,#3b1d5e)}.unl-sw-skin-gold{background:radial-gradient(circle at 30% 30%,#ffe9a0,#d9a520 60%,#8a6410)}
.unl-sw-frame-none{border:2px dashed #5a4a80}.unl-sw-frame-ring{border:3px solid #39E75F}.unl-sw-frame-glow{border:2px solid #39E75F;box-shadow:0 0 12px 3px rgba(57,231,95,.6)}
.unl-sw-frame-flame{border:2px solid #ff8a3d;box-shadow:0 0 12px 3px rgba(255,138,61,.7)}.unl-sw-frame-crown{border:3px solid #ffc94a;box-shadow:0 0 0 2px #17132A,0 0 0 5px #ffc94a}
.unl-moment{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(13,10,23,.78);animation:unl-fade .2s ease both}
.unl-moment.out{opacity:0;transition:opacity .25s}
.unl-card{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:8px;width:min(340px,88vw);padding:28px 24px;background:#24163f;border:2px solid #FF8A3D;border-radius:20px;color:#FFF4E0;text-align:center;animation:unl-pop .7s cubic-bezier(.3,1.5,.4,1) both}
.unl-big{font-size:26px;font-weight:800;color:#3ccf8e}.unl-nm{font-size:20px;font-weight:700}.unl-kind{font-size:14px;color:#cbb9df}.unl-card .btn{width:100%;margin-top:6px}
.unl-shine{position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);animation:unl-sweep .8s .35s ease-out both;pointer-events:none}
@keyframes unl-pop{0%{transform:scale(0)}70%{transform:scale(1.12)}100%{transform:scale(1)}}@keyframes unl-sweep{from{left:-60%}to{left:130%}}@keyframes unl-fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.unl-card{animation:unl-fade .3s ease both}.unl-shine{display:none}.av.fr-flame{animation:none}}
/* header v2: every header button is a real 44px-wide tap target (Luca's 44px standard) so neighbours' hit areas never overlap */
@media (max-width:1023px){ .audiobar.hdr2>.pill,.audiobar.hdr2 .mbbtn{min-width:44px!important;justify-content:center;display:inline-flex;align-items:center} .audiobar.hdr2{--hdr-gap:6px} }
/* mobile round/reveal: the room controls (📤 invite, ⏱ timer, ✕ leave) sit top right, so Inbox + Friends step aside there (no overlap) */
@media (max-width:1023px){ body[data-view=round] .hdr2 .mbbtn,body[data-view=round] .hdr2 #frbtn,body[data-view=reveal] .hdr2 .mbbtn,body[data-view=reveal] .hdr2 #frbtn{display:none!important} }
/* v5.3 '+ Freund' in the room list + friend requests in the inbox */
.frqbtn{min-height:44px;margin-right:6px;border:1px solid var(--green-edge,#1f9a63)!important;color:#0d2a1c!important;background:var(--green,#3CCF8E)!important;font-weight:700}
.frq{margin-right:8px;color:var(--cream);opacity:.85}.frq.ok{color:var(--green,#3CCF8E);opacity:1;font-weight:700}.frq.ok{color:var(--green,#3ccf8e);opacity:1}
.frqact{display:flex;gap:6px;flex-wrap:wrap}.frqact .pill{min-height:44px}
/* t170u pot stack + flying chips (chip colour = --cc) */
.potstack{display:flex;justify-content:center;align-items:flex-end;gap:3px;height:34px;margin-bottom:2px;pointer-events:none}
.pcol{position:relative;width:18px;height:100%}
.pd{position:absolute;left:0;bottom:calc(var(--i) * 3px);width:18px;height:6px;border-radius:50%;background:var(--cc);box-shadow:0 1px 0 rgba(0,0,0,.45),inset 0 0 0 1.5px rgba(255,255,255,.55)}
.pd:nth-child(n+11){bottom:calc((var(--i) - 10) * 3px);left:4px;opacity:.95}
.pd.new{animation:pdpop .3s ease-out .42s both}
@keyframes pdpop{from{transform:translateY(-6px) scale(1.25);opacity:0}to{transform:none;opacity:1}}
.flychip{position:fixed;z-index:60;width:18px;height:18px;border-radius:50%;background:var(--cc);border:3px dashed rgba(255,255,255,.75);box-shadow:0 2px 6px rgba(0,0,0,.4);pointer-events:none;will-change:transform}
@media (max-width:1023px){ body[data-view=round] .potstack{height:24px} body[data-view=round] .pcol{width:14px} body[data-view=round] .pd{width:14px;height:5px;bottom:calc(var(--i) * 2px)} body[data-view=round] .pd:nth-child(n+11){bottom:calc((var(--i) - 10) * 2px);left:3px} }
@media (prefers-reduced-motion:reduce){ .pd.new{animation:none} .flychip{display:none} }
.unl-sw-chip-orange,.unl-sw-chip-blue,.unl-sw-chip-green,.unl-sw-chip-red,.unl-sw-chip-purple,.unl-sw-chip-pink,.unl-sw-chip-black,.unl-sw-chip-gold{border-radius:50%;border:4px dashed rgba(255,255,255,.75)}
.unl-sw-chip-orange{background:#ff8a3d}.unl-sw-chip-blue{background:#3d8bff}.unl-sw-chip-green{background:#2fbf71}.unl-sw-chip-red{background:#e5484d}.unl-sw-chip-purple{background:#9b5de5}.unl-sw-chip-pink{background:#ff5fa2}.unl-sw-chip-black{background:#2b2b33}.unl-sw-chip-gold{background:#f5c542}
/* t171u friend lobby join states */
.frb.join{background:#2fbf71;color:#0f2a1c;font-weight:700;border-color:#2fbf71;min-height:44px;display:inline-flex;align-items:center}
.frb.locked{opacity:.55;filter:grayscale(1);cursor:not-allowed}
.frmi[disabled]{opacity:.5;cursor:not-allowed}
/* t172u spectators + emotes */
.specbox{border:1px solid #2fbf71}.specbox b{color:#7be3a6}.specl{margin-top:8px;text-align:center}
.seat.cheer{cursor:pointer}
.emopick{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:70;background:#241a3a;border:1px solid #ffffff2e;border-radius:18px;padding:10px 12px;box-shadow:0 10px 30px #0009;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:calc(100vw - 24px);color:var(--cream,#FFF4E0)}
.emorow{display:grid;grid-template-columns:repeat(4,44px);gap:6px}
.emob{width:44px;height:44px;font-size:24px;border-radius:12px;border:0;background:#ffffff14;cursor:pointer}.emob:active{transform:scale(.92)}
#emox{min-height:44px;min-width:44px}
.emofloat{position:fixed;z-index:65;font-size:30px;pointer-events:none;transform:translate(-50%,-50%);animation:emofl 1.7s ease-out forwards}
.emofloat.still{animation:emofade 1.7s linear forwards}
@keyframes emofl{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}15%{opacity:1;transform:translate(-50%,-60%) scale(1.15)}100%{opacity:0;transform:translate(-50%,-260%) scale(1)}}
@keyframes emofade{0%,80%{opacity:1}100%{opacity:0}}
/* t175u: each seat's stack + bet pill in that player's own chip colour (room state 'cc', same for every viewer) */
.seat .chip.pcc:before{background:var(--cc);border-color:rgba(255,255,255,.75)}
.seat .bet.pcc:before{content:'';display:inline-block;width:9px;height:9px;margin-right:4px;border-radius:50%;background:var(--cc);border:2px dashed rgba(255,255,255,.8);vertical-align:-1px}
/* t175u volume slider: 44px hit area, big thumb, no browser panning/scroll while dragging */
.setvol input[type=range]{-webkit-appearance:none;appearance:none;height:44px;min-height:44px;background:transparent;touch-action:none;cursor:pointer;margin:0;padding:0}
.setvol input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:999px;background:linear-gradient(90deg,var(--or) var(--v,50%),#ffffff2e var(--v,50%))}
.setvol input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;margin-top:-10px;border-radius:50%;background:var(--cream);border:3px solid var(--or);box-shadow:0 2px 6px #0007}
.setvol input[type=range]::-moz-range-track{height:8px;border-radius:999px;background:#ffffff2e}
.setvol input[type=range]::-moz-range-progress{height:8px;border-radius:999px;background:var(--or)}
.setvol input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--cream);border:3px solid var(--or)}
.setvol input[type=range]:disabled{opacity:.4}
.specn{display:inline-flex;align-items:center;gap:2px}.speckick{min-width:44px;min-height:44px;background:none;border:0;color:var(--or);font-size:16px;cursor:pointer}
/* t178u: floating chat button always bottom right, above the home indicator / bottom bars, never over the top content */
body .chatfab{top:auto!important;bottom:calc(12px + env(safe-area-inset-bottom,0px))!important;right:calc(12px + env(safe-area-inset-right,0px))!important}
body[data-view=reveal] .chatfab{display:none!important}
.revchat{margin:16px 0 calc(16px + env(safe-area-inset-bottom,0px))}
.revchat .chat{display:flex!important;flex-direction:column;background:#2b1d3a!important;border:1px solid #ffffff1a!important;border-radius:16px;padding:10px 12px!important;margin:0!important;max-height:none!important;overflow:visible!important}
.revchat .chat>.head{pointer-events:none}.revchat .chat>.head .small{display:none}
.revchat .msgs{display:block!important;max-height:min(40vh,360px)!important;overflow:auto!important}
.revchat #chatf{display:flex!important;gap:8px;margin-top:8px}.revchat #chatin{flex:1;min-height:44px;font-size:16px}.revchat .send{min-height:44px}
/* t179u: your-turn banner at the betting controls */
.yourturn{margin:8px 0 6px;padding:10px 14px;min-height:44px;border-radius:14px;background:var(--or);color:#2a1440;font-weight:800;font-size:18px;text-align:center;animation:ytpulse 1.1s ease-in-out infinite;box-shadow:0 0 0 0 #ff8a3d99}
@keyframes ytpulse{0%,100%{box-shadow:0 0 0 0 #ff8a3d99;transform:scale(1)}50%{box-shadow:0 0 0 10px #ff8a3d00;transform:scale(1.03)}}
@media (prefers-reduced-motion:reduce){.yourturn{animation:none}}
.settest{margin-top:8px;min-height:44px}
/* t182u: header profile pill – the hidden 'Profil ansehen' line kept the 2-row grid, so the name sat in the top row. Flex + centre */
.hdracct .acct-top,.hdracct .acct-top:has(.acct-vp){display:inline-flex!important;align-items:center!important;line-height:1.2;grid-template-rows:none}
.hdracct .acct-top .acct-nm{display:block;line-height:1.2;padding:0;margin:0}
/* t178u: with the inline chat the reveal screen scrolls; the results card keeps its natural height (never squeezed to 0) */
body[data-view=reveal] .rev:has(.revchat) .card:not(.chat){flex:none!important}
body[data-view=reveal] .rev:has(.revchat) .card:not(.chat){overflow:visible!important;max-height:none!important}
body[data-view=reveal]:has(.revchat) .narrow.rev,body[data-view=reveal]:has(.revchat) .rev2{height:auto!important;max-height:none!important;overflow:visible!important}
body[data-view=reveal]:has(.revchat) #app{height:auto!important;min-height:100dvh;overflow:visible!important}
body[data-view=reveal]:has(.revchat) .rev,body[data-view=reveal]:has(.revchat) .rev>div:last-of-type{flex:none!important;min-height:0}
.revchat{max-width:100%;min-width:0;box-sizing:border-box}.revchat .chat{box-sizing:border-box;width:100%;min-width:0}
.revchat .reacts,.revchat .quick{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.revchat .react{flex:1 1 0;min-width:44px}
.revchat #chatin{min-width:0;width:auto}.revchat .send{flex:none}
.revchat .msgs{max-width:100%;overflow-x:hidden!important}.revchat .m{min-width:0;max-width:100%}.revchat .m>div,.revchat .m{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word;min-width:0;flex:1 1 auto}.revchat .m>img,.revchat .m>.av{flex:none}
