:root {
  --bg:#101114;
  --panel:#191b20;
  --panel2:#22252b;
  --text:#f5f7fa;
  --muted:#a7adb8;
  --border:#343842;
  --accent:#f3f5f7;
  --danger:#ff7f7f;
}

*{box-sizing:border-box}
body{margin:0;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);background:radial-gradient(circle at top,#1d222b 0%,var(--bg) 42%)}
button,select{font:inherit}button{cursor:pointer;border:0}.hidden{display:none!important}
.app-shell{width:min(1480px,calc(100% - 28px));margin:auto;padding:28px 0 56px}.screen{min-height:80vh}
.panel,.status-panel,.score-card,.history-panel{background:rgba(25,27,32,.94);border:1px solid var(--border);border-radius:18px}
.hero{width:min(900px,100%);margin:7vh auto 0;padding:34px}.hero h1{margin:4px 0 12px;font-size:clamp(2.2rem,8vw,4.5rem);line-height:.95}
.eyebrow{margin:0;color:var(--muted);font-size:.78rem;letter-spacing:.16em;font-weight:800}.muted{color:var(--muted)}
.setup-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}label{display:block;margin:28px 0 8px;color:var(--muted);font-size:.9rem}
select{width:100%;padding:14px 16px;color:var(--text);background:var(--panel2);border:1px solid var(--border);border-radius:12px}
.mode-note{margin-top:16px;padding:13px 14px;display:flex;flex-direction:column;gap:3px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.025)}.mode-note span{font-size:.85rem;color:var(--muted);line-height:1.35}
.primary,.ghost{border-radius:12px;padding:13px 18px;font-weight:800}.primary{background:var(--accent);color:#111318}.hero>.primary{width:100%;margin-top:14px}.ghost{color:var(--text);background:transparent;border:1px solid var(--border)}
.error{margin-top:14px;color:var(--danger);white-space:pre-line}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px}.topbar>div:first-child{display:flex;flex-direction:column;gap:4px}.topbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.memory-pill{font-size:.78rem;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:7px 10px;background:rgba(255,255,255,.025)}
.scorebar{display:grid;grid-template-columns:1fr .8fr 1fr;gap:12px;margin-bottom:12px}.score-card{padding:14px 16px;text-align:center}.score-card span{display:block;color:var(--muted);font-size:.8rem;margin-bottom:4px}.score-sub{display:block;color:var(--muted);font-size:.76rem;margin-top:4px}
.status-panel{padding:18px;margin-bottom:18px;text-align:center}.status-panel h2,.status-panel p{margin:0}.status-panel p{margin-top:4px}
.play-layout{display:grid;grid-template-columns:150px minmax(0,1fr) 150px;grid-template-areas:"p1 board p2";gap:18px;align-items:center}.history-p1{grid-area:p1}.history-p2{grid-area:p2}.board{grid-area:board;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:22px;align-items:center}.card-slot{min-width:0;padding:8px;border-radius:24px;border:1px solid transparent;transition:border-color .15s ease,background .15s ease}.card-slot.active-slot{border-color:#59606c;background:rgba(255,255,255,.025)}.slot-label{text-align:center;color:var(--muted);font-size:.85rem;margin:0 0 8px}.active-slot .slot-label{color:var(--text);font-weight:800}
.history-panel{padding:12px;align-self:center;min-height:260px}.history-heading{display:flex;flex-direction:column;gap:2px;text-align:center;margin-bottom:10px}.history-heading strong{font-size:.9rem}.history-heading span{font-size:.72rem;color:var(--muted)}.mini-card-list{display:grid;gap:9px}.mini-card{position:relative;overflow:hidden;border-radius:9px;border:1px solid var(--border);background:#15171b;box-shadow:0 8px 18px rgba(0,0,0,.22)}.mini-card img{display:block;width:100%;height:auto}.mini-placeholder{aspect-ratio:184.252/255.118;display:grid;place-items:center;border:1px dashed var(--border);border-radius:9px;color:#606774;font-size:1.5rem}.history-count{display:block;text-align:center;margin-top:9px;font-size:.72rem;min-height:1em}
.quartet-card{position:relative;width:min(100%,430px);margin:auto;overflow:hidden;border-radius:20px;box-shadow:0 20px 50px rgba(0,0,0,.3);background:#1c1f25;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.card-image{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}
.stat-hitbox{position:absolute;z-index:3;padding:0;background:transparent;border:1px solid transparent;border-radius:6px;touch-action:manipulation}.stat-hitbox:hover,.stat-hitbox:focus-visible{background:rgba(255,255,255,.11);border-color:rgba(255,255,255,.8);outline:none}.stat-hitbox.selected{background:rgba(255,255,255,.16);border-color:#fff;box-shadow:0 0 0 2px rgba(0,0,0,.45)}.stat-hitbox[disabled]{cursor:default}
.choice-card{box-shadow:0 0 0 2px rgba(255,255,255,.22),0 20px 50px rgba(0,0,0,.3)}.keep-overlay{position:absolute;inset:0;z-index:6;background:rgba(0,0,0,.02);display:flex;align-items:flex-end;justify-content:center;padding:0 14px 18px;color:#fff}.keep-overlay span{opacity:0;transform:translateY(5px);transition:opacity .15s ease,transform .15s ease;background:rgba(12,13,16,.9);border:1px solid rgba(255,255,255,.7);border-radius:999px;padding:9px 13px;font-size:.82rem;font-weight:900;box-shadow:0 8px 24px rgba(0,0,0,.35)}.choice-card:hover{transform:translateY(-3px);box-shadow:0 0 0 2px #fff,0 24px 60px rgba(0,0,0,.38)}.choice-card:hover .keep-overlay span,.keep-overlay:focus-visible span{opacity:1;transform:none}.keep-overlay:focus-visible{outline:3px solid #fff;outline-offset:-4px}.kept-choice{box-shadow:0 0 0 3px #fff,0 20px 50px rgba(0,0,0,.35)}.discarded-choice{opacity:.48;filter:saturate(.55)}
.card-back{aspect-ratio:184.252/255.118;min-height:0;display:grid;place-items:center;background:linear-gradient(135deg,rgba(255,255,255,.04) 25%,transparent 25%) 0 0/30px 30px,linear-gradient(315deg,rgba(255,255,255,.04) 25%,transparent 25%) 0 0/30px 30px,#1d2026;border:1px solid var(--border)}
.back-mark{width:110px;aspect-ratio:1;display:grid;place-items:center;border:2px solid #555b66;border-radius:50%;color:#7c8492;font-size:4rem;font-weight:900}.versus{font-weight:900;color:var(--muted)}.actions{display:flex;justify-content:center;margin-top:20px}#game-over{margin:24px auto 0;padding:22px;width:min(650px,100%);text-align:center}
@media(max-width:1080px){.play-layout{grid-template-columns:1fr 1fr;grid-template-areas:"board board" "p1 p2";align-items:start}.history-panel{min-height:0}.mini-card-list{grid-template-columns:repeat(2,minmax(0,110px));justify-content:center}.history-count{margin-bottom:2px}}
@media(max-width:860px){.setup-grid{grid-template-columns:1fr 1fr}.setup-grid>div:last-child{grid-column:1/-1}}
@media(max-width:760px){.app-shell{width:min(100% - 18px,680px);padding-top:14px}.hero{margin-top:4vh;padding:24px}.setup-grid{grid-template-columns:1fr}.setup-grid>div:last-child{grid-column:auto}.setup-grid label{margin-top:18px}.scorebar{grid-template-columns:1fr 1fr}.scorebar .pot-score{grid-column:1/-1;grid-row:2}.board{grid-template-columns:1fr}.versus{text-align:center;margin:-4px 0}.quartet-card{width:min(100%,440px)}.play-layout{grid-template-columns:1fr 1fr}.history-panel{padding:10px}.topbar{align-items:flex-start}.topbar-actions{flex-direction:column;align-items:flex-end}.memory-pill{max-width:210px;text-align:right}.keep-overlay span{opacity:1;transform:none}}

/* V8: Fallback für Quartetts, deren Kartenlayout noch keine kalibrierten Klickflächen hat. */
.card-visual{position:relative}
.category-chooser{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:10px;background:#121419;border-top:1px solid var(--border)}
.category-choice{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;padding:7px 9px;border:1px solid var(--border);border-radius:9px;background:#1b1e24;color:var(--text);cursor:pointer;font:inherit}
.category-choice:hover,.category-choice:focus-visible{border-color:#8a919e;background:#232730;outline:none}
.category-choice span{font-size:.72rem;color:var(--muted);text-align:left}
.category-choice strong{font-size:.92rem}
.category-choice.selected{border-color:#fff;background:#292d35}
.selected-category-strip{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;background:#121419;border-top:1px solid var(--border);font-size:.78rem}
.selected-category-strip span{color:var(--muted)}
@media(max-width:520px){.category-chooser{grid-template-columns:1fr}}
.hub-link{display:inline-block;margin-bottom:18px;color:var(--muted);text-decoration:none;font-size:.82rem}.hub-link:hover{color:var(--text)}

/* V10 · Online-Lobby */
input{width:100%;padding:14px 16px;color:var(--text);background:var(--panel2);border:1px solid var(--border);border-radius:12px;font:inherit}
input:focus,select:focus{outline:2px solid rgba(255,255,255,.55);outline-offset:2px}
.online-hero .primary{width:100%;margin-top:14px}
.lobby-panel{width:min(820px,100%);margin:6vh auto 0;padding:32px}.lobby-panel h1{font-size:clamp(2.3rem,8vw,4.6rem);margin:8px 0 8px;line-height:.95}.lobby-panel h1 span{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.06em}
.invite-box{display:flex;align-items:center;gap:14px;justify-content:space-between;margin:24px 0;padding:14px;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.025)}.invite-box>div{min-width:0}.invite-box span{display:block;color:var(--muted);font-size:.75rem;margin-bottom:4px}.invite-box code{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}
.lobby-players{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.lobby-player{padding:18px;border:1px solid var(--border);border-radius:14px;background:var(--panel2)}.lobby-player>span{display:block;color:var(--muted);font-size:.76rem;margin-bottom:5px}.lobby-player strong{display:block;font-size:1.15rem}.lobby-player small{display:inline-block;margin-top:10px;padding:4px 8px;border:1px solid var(--border);border-radius:999px}.lobby-player .ready{color:#cfe8d5}.lobby-player .waiting{color:var(--muted)}
.connection-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 18px}.lobby-note{font-size:.85rem}.invite-summary{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:18px 0;padding:14px;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.025)}.invite-summary span{color:var(--muted)}
#online-game-over{margin:24px auto 0;padding:22px;width:min(650px,100%);text-align:center}#online-game-over .primary{margin-top:8px}
.sync-ok{color:#cfe8d5}.sync-warn{color:#ffd7a6}.sync-error{color:#ffb0b0}
@media(max-width:700px){.lobby-players{grid-template-columns:1fr}.invite-box{align-items:stretch;flex-direction:column}.invite-box .ghost{width:100%}}

.launch-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.launch-actions .primary{width:100%;margin:0;text-align:center;text-decoration:none;display:flex;align-items:center;justify-content:center}.online-launch{background:#d9f99d;color:#111318}@media(max-width:600px){.launch-actions{grid-template-columns:1fr}}

/* V11 · 2 bis 4 Spieler + individuelle Kartenrueckseiten */
.card-back-image{width:100%;height:100%;object-fit:cover;display:block}
.setup-grid-v11{grid-template-columns:repeat(2,minmax(0,1fr))}
.lobby-players-v11{grid-template-columns:repeat(2,minmax(0,1fr))}
.multi-meta-row{display:flex;justify-content:center;gap:12px;margin:0 auto 18px;flex-wrap:wrap}.multi-meta-row .score-card{min-width:170px}
.online-board{--player-count:2;display:grid;grid-template-columns:repeat(var(--player-count),minmax(0,1fr));gap:16px;align-items:start}
.online-player-seat{min-width:0;padding:12px;border:1px solid var(--border);border-radius:18px;background:rgba(255,255,255,.018);transition:border-color .15s ease,background .15s ease}.online-player-seat.active-seat{border-color:#7b8492;background:rgba(255,255,255,.04)}.online-player-seat.own-seat{box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.seat-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.seat-heading>div:first-child{min-width:0}.seat-heading strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seat-heading span{display:block;margin-top:2px;color:var(--muted);font-size:.72rem}.seat-counts{text-align:right;flex:none}.seat-counts b{display:block;font-size:.82rem}.seat-counts small{display:block;margin-top:2px;color:var(--muted);font-size:.68rem}
.seat-card-holder .quartet-card{width:100%;max-width:310px}.tie-waiting{text-align:center;color:var(--muted);font-size:.72rem;margin-top:8px}
.seat-history{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.seat-history>span{display:block;text-align:center;color:var(--muted);font-size:.68rem;margin-bottom:7px}.seat-mini-list{display:grid;grid-template-columns:repeat(2,minmax(0,64px));gap:6px;justify-content:center}.seat-mini-list .mini-placeholder{font-size:1rem}.seat-history-count{display:block;text-align:center;color:var(--muted);font-size:.68rem;margin-top:6px;min-height:1em}
@media(max-width:1100px){.online-board{grid-template-columns:repeat(2,minmax(0,1fr))}.seat-card-holder .quartet-card{max-width:360px}}
@media(max-width:700px){.setup-grid-v11{grid-template-columns:1fr}.lobby-players-v11{grid-template-columns:1fr}.online-board{grid-template-columns:1fr}.online-player-seat{padding:10px}.seat-card-holder .quartet-card{max-width:440px}}
