:root{--bg:#1a472a;--bg-card:#f5f0e8;--text:#f0e6d3;--text-dark:#2c1810;--accent:#c9a84c;--accent-hover:#dbb85c;--danger:#c0392b;--success:#27ae60;--card-shadow:0 2px 8px rgba(0,0,0,.3);--border-radius:8px;--card-w:90px;--card-h:130px;--hand-overlap:-16px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;min-height:100dvh}.container{margin:0 auto;max-width:960px;padding:1rem}.btn{align-items:center;border:none;border-radius:var(--border-radius);cursor:pointer;display:inline-flex;font-size:1rem;font-weight:600;gap:.5rem;justify-content:center;padding:.75rem 1.5rem;transition:all .2s}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-primary{background:var(--accent);color:var(--text-dark)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:#ffffff26;border:1px solid hsla(0,0%,100%,.25);color:var(--text)}.btn-secondary:hover:not(:disabled){background:#ffffff40}.input{background:#ffffff1a;border:1px solid hsla(0,0%,100%,.25);border-radius:var(--border-radius);color:var(--text);font-size:1rem;padding:.75rem 1rem;width:100%}.input::-moz-placeholder{color:#fff6}.input::placeholder{color:#fff6}.input:focus{border-color:transparent;outline:2px solid var(--accent)}.panel{background:#ffffff14;border:1px solid hsla(0,0%,100%,.12);border-radius:var(--border-radius);padding:1.5rem}.playing-card{background:var(--bg-card);border:2px solid transparent;border-radius:8px;box-shadow:var(--card-shadow);color:var(--text-dark);cursor:default;font-weight:700;height:var(--card-h);justify-content:center;overflow:hidden;position:relative;transition:transform .15s,box-shadow .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--card-w)}.card-corner,.playing-card{align-items:center;display:flex;flex-direction:column}.card-corner{gap:1px;line-height:1;position:absolute}.card-corner.top-left{left:5px;top:4px}.card-corner.bottom-right{bottom:4px;right:5px;transform:rotate(180deg)}.corner-value{font-size:.85rem;font-weight:800}.card-center{align-items:center;display:flex;justify-content:center}.playing-card.color-HERZ{background:linear-gradient(170deg,var(--bg-card) 60%,#f5e0de);border-color:#c0392b}.playing-card.color-EICHEL{background:linear-gradient(170deg,var(--bg-card) 60%,#ece0d4);border-color:#6b3a2a}.playing-card.color-GRUEN{background:linear-gradient(170deg,var(--bg-card) 60%,#ded);border-color:#2e8b3c}.playing-card.color-SCHELLEN{background:linear-gradient(170deg,var(--bg-card) 60%,#f5edd4);border-color:#d4a017}.playing-card.color-HERZ .corner-value{color:#c0392b}.playing-card.color-EICHEL .corner-value{color:#6b3a2a}.playing-card.color-GRUEN .corner-value{color:#2e8b3c}.playing-card.color-SCHELLEN .corner-value{color:#b8860b}.playing-card.is-face-card{border-width:2px}.playing-card.is-face-card .card-center{background:radial-gradient(ellipse at center,rgba(201,168,76,.12) 0,transparent 70%);height:60%;width:100%}.playing-card.playable{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent),var(--card-shadow);cursor:pointer}.playing-card.playable:hover{box-shadow:0 0 0 2px var(--accent-hover),0 8px 20px #0006;transform:translateY(-8px)}.playing-card.face-down{background:linear-gradient(135deg,#2c5aa0,#1a3a6a);border-color:#3a6ab5}.playing-card.face-down:after{background:repeating-linear-gradient(45deg,transparent,transparent 3px,hsla(0,0%,100%,.08) 0,hsla(0,0%,100%,.08) 6px);border-radius:4px;content:"";height:75px;width:50px}.score-bar{display:flex;gap:1rem;justify-content:center;margin:1rem 0}.score-team{border-radius:var(--border-radius);font-size:1.1rem;font-weight:700;padding:.5rem 1.5rem}.score-team.team-M{background:#27ae604d;border:1px solid rgba(39,174,96,.5)}.score-team.team-D{background:#c0392b4d;border:1px solid rgba(192,57,43,.5)}.player-seat{align-items:center;background:#ffffff0d;border:1px solid hsla(0,0%,100%,.1);border-radius:var(--border-radius);display:flex;gap:.5rem;padding:.5rem 1rem}.player-seat.active{background:#c9a84c26;border-color:var(--accent)}.player-seat .seat-indicator{background:#ffffff4d;border-radius:50%;height:8px;width:8px}.player-seat.active .seat-indicator{background:var(--accent)}.player-seat.is-ai{opacity:.7}.landing{align-items:center;display:flex;flex-direction:column;gap:2rem;justify-content:center;min-height:100dvh;text-align:center}.landing h1{color:var(--accent);font-size:3rem;letter-spacing:2px}.alpha-badge{border:1px solid rgba(201,168,76,.4);border-radius:4px;color:var(--accent);font-size:.6rem;font-weight:700;letter-spacing:1px;opacity:.7;padding:.1rem .35rem;position:absolute;right:-3rem;text-transform:uppercase;top:.2rem}.landing .subtitle{font-size:1.1rem;margin-top:-1rem;opacity:.7}.landing .actions{display:flex;flex-direction:column;gap:1rem;max-width:350px;width:100%}.landing .join-row{display:flex;gap:.5rem}.landing .join-row .input{flex:1}.game-board{padding:.75rem}.board-table{align-items:center;display:grid;gap:0;grid-template-areas:". top ." "left center right" ". bottom .";grid-template-columns:1fr auto 1fr;justify-items:center}.board-slot-top{grid-area:top}.board-slot-left,.board-slot-top{align-items:center;display:flex;flex-direction:column;gap:.25rem}.board-slot-left{grid-area:left}.board-slot-right{grid-area:right}.board-slot-bottom,.board-slot-right{align-items:center;display:flex;flex-direction:column;gap:.25rem}.board-slot-bottom{grid-area:bottom}.board-center{flex-shrink:0;grid-area:center;height:1.5rem;width:1.5rem}.card-area{flex-shrink:0;height:var(--card-h);position:relative;width:var(--card-w)}.card-area .playing-card{box-shadow:0 4px 16px #0006;transform:scale(1.08)}.board-slot-top .card-area .playing-card{transform:scale(1.08) translateY(8px)}.board-slot-bottom .card-area .playing-card{transform:scale(1.08) translateY(-8px)}.board-slot-left .card-area .playing-card{transform:scale(1.08) translate(8px)}.board-slot-right .card-area .playing-card{transform:scale(1.08) translate(-8px)}.board-slot-empty{border:2px dashed hsla(0,0%,100%,.12);border-radius:8px;height:100%;width:100%}.player-label{display:block;font-size:.7rem;height:1em;line-height:1;opacity:.7}.hand{display:flex;justify-content:center;padding:1rem 0}.hand .playing-card{margin-right:var(--hand-overlap);position:relative;transition:transform .2s ease-out,box-shadow .2s ease-out,z-index 0s 0s;z-index:1}.hand .playing-card:last-child{margin-right:0}.hand .playing-card.hinted,.hand .playing-card.playable:hover,.hand .playing-card:hover{transition:transform .2s ease-out,box-shadow .2s ease-out,z-index 0s 0s;z-index:10}.status-banner{border-radius:var(--border-radius);font-weight:600;margin:.5rem 0;padding:.75rem;text-align:center}.status-banner.your-turn{background:#c9a84c33;border:1px solid var(--accent);color:var(--accent)}.status-banner.waiting{background:#ffffff0d;border:1px solid hsla(0,0%,100%,.1);opacity:.7}.game-over{padding:2rem;text-align:center}.game-over h2{color:var(--accent);font-size:2rem;margin-bottom:1rem}.game-over .result{font-size:1.2rem;margin-bottom:1.5rem}.lobby{align-items:center;display:flex;flex-direction:column;gap:1.5rem;padding-top:3rem}.lobby .room-code,.lobby h2{color:var(--accent)}.lobby .room-code{font-family:monospace;font-size:2.5rem;font-weight:800;letter-spacing:8px}.lobby .player-list{display:flex;flex-direction:column;gap:.5rem;max-width:350px;width:100%}.lobby .waiting-text{font-style:italic;opacity:.6}.seat-grid{display:grid;gap:.75rem;grid-template-columns:1fr 1fr;max-width:480px;width:100%}.seat-card{background:#ffffff0d;border:2px solid hsla(0,0%,100%,.1);border-radius:var(--border-radius);padding:.75rem;text-align:center;transition:border-color .2s,background .2s}.seat-card.is-occupied{background:#ffffff14;border-color:#fff3}.seat-card.is-me{background:#c9a84c1f;border-color:var(--accent)}.seat-card.is-clickable{border-style:dashed;cursor:pointer}.seat-card.is-clickable:hover{background:#c9a84c14;border-color:var(--accent)}.seat-team-badge{border-radius:4px;display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.5px;margin-bottom:.35rem;padding:.15rem .5rem;text-transform:uppercase}.seat-team-badge.team-M{background:#27ae604d;color:#6fcf97}.seat-team-badge.team-D{background:#c0392b4d;color:#e88}.seat-number{font-size:.8rem;margin-bottom:.25rem;opacity:.6}.seat-player-name{font-size:1rem;font-weight:600}.seat-tag{font-size:.65rem;font-weight:400;margin-left:.25rem;opacity:.6}.seat-empty{font-size:.8rem;font-style:italic;opacity:.4}.game-type-badge{border-radius:99px;display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:1px;padding:.2rem .75rem;text-align:center;width:-moz-fit-content;width:fit-content}.game-type-muck{background:#ffffff14;border:1px solid hsla(0,0%,100%,.12);color:#ffffff80}.game-type-wenz{background:#c9a84c2e;border:1px solid rgba(201,168,76,.4);color:var(--accent)}.bidding-phase{align-items:center;display:flex;flex-direction:column;gap:1.25rem;padding-top:3rem;text-align:center}.bidding-phase h2{color:var(--accent)}.bid-log{display:flex;flex-direction:column;gap:.4rem;min-height:2rem}.bid-entry{font-size:.95rem}.bid-player{margin-right:.25rem;opacity:.7}.bid-wenz{color:var(--accent);font-weight:700}.bid-muck{opacity:.5}.bid-buttons{display:flex;gap:1rem}.match-score{font-size:1rem;opacity:.8}.match-pts{font-size:.75rem;margin-left:.25rem;opacity:.6}.reconnecting-banner{animation:pulse 1.5s ease-in-out infinite;background:#f0963226;border:1px solid rgba(240,150,50,.4);border-radius:6px;font-size:.85rem;margin-bottom:.75rem;padding:.5rem 1rem;text-align:center}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.landing-footer{font-size:.8rem;margin-top:2rem;opacity:.5}.landing-footer:hover{opacity:.8}.viz-link{color:var(--text);text-decoration:none}.viz-link:hover{text-decoration:underline}.viz-page{max-width:900px}.viz-header{align-items:center;display:flex;gap:1rem;margin-bottom:1rem}.back-link{color:var(--text);font-size:.9rem;opacity:.7;text-decoration:none}.back-link:hover{opacity:1}.viz-section{margin-top:1.5rem}.viz-section h3{font-size:1rem;margin:0 0 .75rem;opacity:.9}.model-tabs{display:flex;gap:.5rem;margin-bottom:1rem}.loading-text,.unavailable-text{opacity:.6;padding:2rem 0;text-align:center}.arch-diagram{align-items:flex-end;display:flex;gap:2rem;margin-bottom:.75rem}.arch-col{align-items:center;display:flex;flex-direction:column;gap:.3rem}.arch-bar{background:var(--accent);border-radius:4px 4px 0 0;min-height:8px;opacity:.8;width:48px}.arch-size{font-size:1rem;font-weight:600}.arch-label{font-size:.7rem;opacity:.7}.arch-stats{display:flex;font-size:.8rem;gap:1.5rem;opacity:.7}.importance-chart{display:flex;flex-direction:column;gap:.4rem}.importance-row{align-items:center;display:flex;gap:.5rem}.importance-label{flex-shrink:0;font-size:.78rem;opacity:.8;text-align:right;width:160px}.importance-track{background:#ffffff14;border-radius:3px;flex:1;height:14px;overflow:hidden}.importance-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .3s}.importance-val{font-family:monospace;font-size:.72rem;opacity:.6;width:50px}.viz-tip{font-size:.82rem;line-height:1.5;margin:0 0 .6rem;opacity:.75}.trump-tip{color:#e0c060;opacity:.9}.output-chart{display:flex;flex-direction:column;gap:.3rem}.output-row{gap:.5rem}.output-card-name,.output-row{align-items:center;display:flex}.output-card-name{flex-shrink:0;font-size:.8rem;gap:.4rem;width:160px}.output-suit-herz{color:#e05555}.output-suit-eichel{color:#c8a84b}.output-suit-gras{color:#6b5}.output-suit-schelle{color:#d93}.trump-badge{background:#e0c04040;border-radius:3px;color:#e0c040;font-size:.6rem;font-weight:600;padding:1px 4px}.output-bar-track{background:#ffffff12;border-radius:3px;flex:1;height:16px;overflow:hidden}.output-bar-fill{border-radius:3px;height:100%;transition:width .3s}.output-bar-fill.pref-positive{background:#c44}.output-bar-fill.pref-negative{background:#46a}.output-bias-val{font-family:monospace;font-size:.72rem;text-align:right;width:52px}.output-bias-val.pref-positive{color:#c66}.output-bias-val.pref-negative{color:#68c}.heatmap-legend{font-size:.75rem;margin:0 0 .4rem;opacity:.5}.heatmap-wrap{overflow-x:auto}.heatmap-canvas{display:block;image-rendering:pixelated;max-width:800px;width:100%}.host-settings{display:flex;flex-direction:column;font-size:.85rem;gap:.4rem;margin-bottom:1rem;opacity:.9}.setting-row{align-items:center;display:flex;gap:.75rem;justify-content:center}.btn-sm{font-size:.8rem;padding:.2rem .8rem}.hint-btn{font-size:.8rem;opacity:.8;padding:.3rem 1rem}.playing-card.hinted{box-shadow:0 0 0 3px #f0c040,0 0 12px 4px #f0c04080;transform:translateY(-6px) scale(1.06);z-index:10}@media(min-width:768px){:root{--card-w:100px;--card-h:145px;--hand-overlap:-20px}.container{padding:1.5rem 2rem}.corner-value{font-size:1rem}.card-corner.top-left{left:7px;top:6px}.card-corner.bottom-right{bottom:6px;right:7px}.card-center svg{height:50px;width:50px}.card-corner svg{height:17px;width:17px}.hand{padding:1.5rem 0}.game-board{padding:1.25rem}.board-center{height:2.5rem;width:2.5rem}}@media(max-width:500px){:root{--card-w:75px;--card-h:108px;--hand-overlap:-24px}.corner-value{font-size:.75rem}.card-corner.top-left{left:4px;top:4px}.card-corner.bottom-right{bottom:4px;right:4px}.card-center svg{height:34px;width:34px}.card-corner svg{height:13px;width:13px}.landing h1{font-size:2rem}.seat-grid{gap:.5rem}}
