:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{--primary-color: #2563eb;--danger-color: #dc2626;--success-color: #16a34a;--warning-color: #ea580c;--bg-dark: #1e293b;--bg-light: #f8fafc;--card-bg: #ffffff;--border-color: #e2e8f0;--text-primary: #0f172a;--text-secondary: #64748b;--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;color:var(--text-primary);display:block}#root{width:100%;min-height:100vh}.container{max-width:1200px;margin:0 auto;padding:2rem}.container:has(.game.in-game){max-width:none;padding:.5rem}.lobby{background:var(--card-bg);border-radius:1rem;padding:2rem;box-shadow:var(--shadow-lg);max-width:600px;margin:0 auto}.lobby h1{text-align:center;margin-bottom:2rem;color:var(--primary-color);font-size:2.5rem}.lobby h2{margin-top:2rem;margin-bottom:1rem;font-size:1.5rem;color:var(--text-primary)}.name-input{margin-bottom:1.5rem}.name-input input{width:100%;padding:.75rem;font-size:1rem;border:2px solid var(--border-color);border-radius:.5rem;transition:border-color .2s}.name-input input:focus{outline:none;border-color:var(--primary-color)}.games-section{margin-top:2rem}.no-games{text-align:center;color:var(--text-secondary);padding:2rem}.games-list{display:flex;flex-direction:column;gap:.75rem}.game-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-light);border-radius:.5rem;border:1px solid var(--border-color)}.game-info{display:flex;flex-direction:column;gap:.25rem}.game-id{font-weight:600;color:var(--text-primary)}.game-players{font-size:.875rem;color:var(--text-secondary)}.game{background:var(--card-bg);border-radius:1rem;padding:2rem;box-shadow:var(--shadow-lg);max-width:1200px;margin:0 auto}.game.in-game{background:transparent;box-shadow:none;padding:.5rem;max-width:100%}.game-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid var(--border-color)}.game.in-game .game-header{background:var(--card-bg);border-radius:.5rem;padding:.75rem 1rem;margin-bottom:.5rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;border-bottom:none}.game-header h2{margin:0;color:var(--primary-color)}.player-name{color:var(--text-secondary);margin-top:.25rem}.game-info-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem;padding:1rem;background:var(--bg-light);border-radius:.5rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-item .label{font-size:.875rem;color:var(--text-secondary);font-weight:500}.info-item .value{font-size:1.125rem;font-weight:600;color:var(--text-primary)}.teams{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;margin-bottom:2rem}.team{background:var(--bg-light);padding:1.5rem;border-radius:.5rem;border:2px solid var(--border-color)}.team h3{margin:0 0 .75rem;color:var(--primary-color)}.team-score{font-size:1.5rem;font-weight:700;margin-bottom:1rem;color:var(--success-color)}.team-players{display:flex;flex-direction:column;gap:.5rem}.team-players span{padding:.5rem;background:#fff;border-radius:.25rem;border:1px solid var(--border-color)}.team-players .highlight{background:var(--primary-color);color:#fff;font-weight:600}.players-list{margin-bottom:2rem}.players-list h3{margin-bottom:1rem}.player-item{display:flex;align-items:center;gap:1rem;padding:.75rem;margin-bottom:.5rem;background:var(--bg-light);border-radius:.5rem;border:1px solid var(--border-color)}.player-item.you{background:#dbeafe;border-color:var(--primary-color);font-weight:600}.player-name{flex:1}.player-cards{color:var(--text-secondary);font-size:.875rem}.current-turn{background:var(--warning-color);color:#fff;padding:.25rem .75rem;border-radius:1rem;font-size:.875rem;font-weight:600}.trump-section{margin-bottom:2rem}.trump-section h3{margin-bottom:1rem}.trump-section .card{display:inline-block;background:linear-gradient(135deg,#fbbf24,#f59e0b);border:3px solid #d97706}.middle-cards{margin-bottom:2rem}.middle-cards h3{margin-bottom:1rem}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem}.played-card{text-align:center}.player-label{margin-top:.5rem;font-size:.875rem;color:var(--text-secondary);font-weight:500}.trick-wins{margin-bottom:2rem}.trick-wins h3{margin-bottom:1rem}.wins-list{display:flex;gap:.5rem;flex-wrap:wrap}.win-badge{padding:.5rem 1rem;background:var(--success-color);color:#fff;border-radius:.5rem;font-weight:600;font-size:.875rem}.your-hand{margin-bottom:2rem}.your-hand h3{margin-bottom:1rem}.hand-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;max-width:600px}.card{background:#fff;border:2px solid var(--border-color);border-radius:.5rem;padding:1.5rem 1rem;font-weight:600;font-size:1.125rem;text-align:center;box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s;min-height:100px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.5rem}.card.clickable{cursor:pointer}.card.clickable:hover:not(:disabled){transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--primary-color)}.card.clickable:disabled{opacity:.5;cursor:not-allowed}.card-value{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.card-suit{font-size:.875rem;color:var(--text-secondary);text-transform:uppercase}.actions{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center;margin-top:2rem;padding-top:2rem;border-top:2px solid var(--border-color)}.actions-compact{display:flex;gap:.4rem;margin-top:.4rem}.btn-action{flex:1;min-width:150px}.btn-action.compact{padding:.35rem .6rem;font-size:.85rem}.btn-truco{background:var(--danger-color);color:#fff}.btn-truco:hover:not(:disabled){background:#b91c1c;transform:scale(1.05)}.btn-accept{background:var(--success-color);color:#fff}.btn-accept:hover:not(:disabled){background:#15803d}.btn-fold{background:var(--text-secondary);color:#fff}.btn-fold:hover:not(:disabled){background:#475569}.error{background:#fee2e2;border:2px solid var(--danger-color);color:#991b1b;padding:1rem;border-radius:.5rem;margin-bottom:1rem;font-weight:500}.game-stage{padding:2rem;background:var(--card-bg);border-radius:1rem;box-shadow:var(--shadow-lg);min-height:400px;max-width:900px;margin:0 auto}.game-stage h2{margin-bottom:1rem;color:var(--primary-color);text-align:center}.game-stage .instructions{text-align:center;color:var(--text-secondary);margin-bottom:2rem;font-size:1.1rem}.teams-selection{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin:2rem 0}.player-selection{margin:2rem 0}.player-selection h3{margin-bottom:1.5rem;text-align:center;color:var(--text-primary)}.players-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:1rem}.player-card{background:var(--bg-light);border:2px solid var(--border-color);border-radius:.75rem;padding:1.5rem;transition:all .3s ease;display:flex;flex-direction:column;gap:1rem}.player-card:not(.unavailable):hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--primary-color)}.player-card.unavailable{opacity:.6;cursor:not-allowed;background:#f1f5f9}.player-info{display:flex;flex-direction:column;gap:.5rem}.player-info .player-name{font-size:1.25rem;font-weight:600;color:var(--text-primary)}.status-badge{font-size:.875rem;color:var(--text-secondary);font-style:italic}.current-teams{margin-top:2rem}.current-teams h3{margin-bottom:1rem;color:var(--text-primary)}.current-teams .team-card{margin-bottom:1rem}.current-teams h4{font-size:1.25rem;margin-bottom:.75rem;color:var(--primary-color)}.member.empty{background:#f1f5f9;color:var(--text-secondary);font-style:italic}.sub-text{margin-top:.5rem;color:var(--text-secondary);font-size:.95rem}.team-card{background:var(--bg-light);border:3px solid var(--border-color);border-radius:.75rem;padding:1.5rem;transition:all .3s ease;cursor:pointer}.team-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.team-card.selected{border-color:var(--success-color);background:#f0fdf4}.team-card.full{opacity:.6;cursor:not-allowed}.team-card h3{font-size:1.5rem;margin-bottom:1rem;text-align:center;color:var(--primary-color)}.team-members{margin:1rem 0}.team-members .member-count{font-weight:700;color:var(--text-secondary);margin-bottom:.5rem}.team-members .member{padding:.5rem;margin:.5rem 0;background:#fff;border-radius:.5rem;border:1px solid var(--border-color)}.team-members .member.you{background:#dbeafe;border-color:var(--primary-color);font-weight:700}.badge-selected{text-align:center;color:var(--success-color);font-weight:700;font-size:1.2rem;margin-top:1rem}.badge-full{text-align:center;color:var(--text-secondary);font-style:italic;margin-top:1rem}.team-selection-status{text-align:center;padding:1rem;background:#f0fdf4;border:2px solid var(--success-color);border-radius:.75rem;margin-top:2rem}.team-selection-status p{color:var(--success-color);font-weight:600}.game-stage.playing{max-width:none;margin:0 auto;padding:.5rem}.winner-announcement{text-align:center;padding:2rem;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:1rem;margin:2rem 0;border:3px solid #f59e0b}.winner-announcement h3{font-size:2.5rem;color:#92400e;margin-bottom:1rem}.winning-score{font-size:1.5rem;color:#78350f;font-weight:700}.teams.final-scores{margin-top:2rem}.teams.final-scores .team.winner{border:3px solid #f59e0b;background:#fffbeb}.badge{display:inline-block;padding:.25rem .75rem;background:var(--primary-color);color:#fff;border-radius:1rem;font-size:.875rem;margin-left:.5rem}.loading{text-align:center;padding:3rem;color:var(--text-secondary);font-size:1.2rem}.table-wrapper .score-bar{display:flex;justify-content:space-between;align-items:center;padding:.25rem .5rem;background:#f8fafce6;border-radius:.5rem;margin-bottom:.5rem;gap:.5rem}.score-left,.score-right{flex:1 1 0;min-width:0}.score-center{flex:0 1 auto;text-align:center;min-width:0}.team-compact{display:flex;flex-direction:column;gap:.25rem;align-items:center}.team-compact.my-team{font-weight:700}.team-compact.my-team .team-header strong{color:var(--primary-color)}.team-header{display:flex;gap:.5rem;align-items:center}.team-players-mini{display:flex;flex-direction:column;font-size:.75rem;color:var(--text-secondary);line-height:1.2}.player-name-mini{overflow:hidden;text-overflow:ellipsis;word-break:break-word}.team-score-small{background:var(--bg-light);border:1px solid var(--border-color);padding:.15rem .5rem;border-radius:.4rem;font-weight:700}.table-wrapper .state-mini,.table-wrapper .points-mini{font-size:.85rem;color:var(--text-secondary)}.trump-display{font-size:.9rem;color:var(--text-primary);margin-top:.25rem}.trump-display strong{color:var(--warning-color);font-weight:700}.trick-wins-bar{display:flex;gap:.5rem;align-items:center;padding:.25rem .5rem;background:#f8fafcb3;border-radius:.5rem;margin-bottom:.5rem;flex-wrap:wrap}.trick-wins-label{font-size:.85rem;font-weight:600;color:var(--text-secondary)}.trick-win-badge{padding:.2rem .5rem;background:var(--success-color);color:#fff;border-radius:.4rem;font-size:.8rem;font-weight:600}.eleven-point-special{background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:.75rem;padding:1rem;margin-bottom:.75rem;box-shadow:0 4px 6px -1px #f59e0b4d}.special-rules-banner{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;justify-content:center}.special-rules-icon{font-size:1.25rem;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}.special-rules-text{font-weight:700;color:#92400e;font-size:.95rem;text-transform:uppercase;letter-spacing:.5px}.partner-cards-display{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.partner-card{background:linear-gradient(135deg,#fff,#fef9c3);border:2px solid #f59e0b;box-shadow:0 2px 4px #f59e0b33;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.partner-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #f59e0b4d}.table{display:grid;grid-template-areas:"top top top" "left center right" "bottom bottom bottom";grid-template-columns:1fr 2fr 1fr;gap:.5rem;align-items:center}.seat{background:var(--bg-light);border:1px solid var(--border-color);border-radius:.5rem;padding:.5rem;min-height:60px;display:flex;flex-direction:column;align-items:center;justify-content:center}.seat-top{grid-area:top}.seat-left{grid-area:left}.seat-right{grid-area:right}.seat-bottom{grid-area:bottom}.seat-name{font-weight:600;font-size:.95rem}.seat-name.you{color:var(--primary-color)}.seat-cards{font-size:.85rem;color:var(--text-secondary)}.turn-ind{margin-top:.25rem}.center-trick{grid-area:center;background:transparent;border:none;display:flex;flex-direction:column;align-items:center;gap:.25rem}.middle-cards-grid{display:flex;gap:.75rem;align-items:center;flex-wrap:nowrap;justify-content:center;max-width:100%}.no-cards{width:100%;text-align:center;color:var(--text-secondary);font-size:.9rem;padding:1rem}.card.small{padding:.4rem .5rem;font-size:.85rem;min-height:48px}.played-card.center{display:flex;flex-direction:column;align-items:center}.played-card.my-card .card{border:2px solid var(--primary-color);background:#dbeafe;box-shadow:0 0 10px #2563eb4d}.played-card.teammate-card .card{border:2px solid var(--success-color);background:#dcfce7;box-shadow:0 0 10px #16a34a4d}.played-card.my-card .player-label{color:var(--primary-color);font-weight:700}.played-card.teammate-card .player-label{color:var(--success-color);font-weight:700}.player-label.small{font-size:.75rem;color:var(--text-secondary)}.hand-row{display:flex;gap:.35rem;margin-top:.4rem;flex-wrap:wrap;justify-content:center}.hand-card{min-width:52px;padding:.35rem .45rem}@media (max-width: 700px){.table{grid-template-columns:minmax(0,.8fr) minmax(0,2fr) minmax(0,.8fr);gap:.25rem}.table-wrapper .score-bar{flex-direction:column;align-items:stretch}.score-left,.score-right,.score-center{flex:1 1 auto;width:100%}.team-compact{flex-direction:row;justify-content:space-between;width:100%}.team-compact strong{font-size:.8rem}.team-score-small{font-size:.7rem}.team-players-mini{font-size:.6rem;flex-direction:row;gap:.25rem}.player-name-mini:after{content:",";margin-right:.15rem}.player-name-mini:last-child:after{content:""}.card.small{padding:.25rem .3rem;font-size:.7rem;min-height:36px;min-width:38px}.card.small .card-value{font-size:.85rem}.card.small .card-suit{font-size:.55rem}.player-label.small{font-size:.55rem;max-width:55px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.middle-cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;max-width:100%}.seat{padding:.25rem;min-height:45px}.seat-name{font-size:.75rem}.seat-cards{font-size:.7rem}}button{padding:.75rem 1.5rem;font-size:1rem;font-weight:600;border:none;border-radius:.5rem;cursor:pointer;transition:all .2s;box-shadow:var(--shadow)}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary-color);color:#fff;width:100%}.btn-primary:hover:not(:disabled){background:#1d4ed8;transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn-join{background:var(--success-color);color:#fff}.btn-join:hover:not(:disabled){background:#15803d}.btn-danger{background:var(--danger-color);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.animation-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;display:flex;align-items:center;justify-content:center;pointer-events:none}.animation-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000080;animation:fadeIn .2s ease-in}.animation-content{position:relative;z-index:1001;background:#fff;border-radius:16px;padding:2rem 3rem;box-shadow:0 8px 32px #0000004d;text-align:center;animation:slideIn .3s ease-out}.animation-icon{font-size:4rem;margin-bottom:1rem;animation:bounce .6s ease-in-out}.animation-text{font-size:1.5rem;font-weight:600;color:#333}.winner-text{font-size:2rem;font-weight:700;color:#2563eb;margin-bottom:.5rem}.sub-text{font-size:1.2rem;color:#666}.player-won-text{font-size:1.5rem;font-weight:600;color:#333;margin:.5rem 0}.card-played .animation-text{margin-bottom:1rem}.animation-card{display:flex;justify-content:center;margin-top:1rem}.card-display{background:#fff;border:2px solid #333;border-radius:8px;padding:1rem 1.5rem;box-shadow:0 4px 8px #0003;min-width:80px}.card-display .card-value{font-size:2rem;font-weight:700;color:#333}.card-display .card-suit{font-size:1.5rem;margin-top:.25rem}.trick-won{background:linear-gradient(135deg,#fef3c7,#fbbf24);border:3px solid #f59e0b}.trick-won .animation-icon{animation:spin .8s ease-in-out}.trick-won .player-won-text{color:#92400e;font-weight:700}.round-won{background:linear-gradient(135deg,#dbeafe,#3b82f6);border:3px solid #2563eb;color:#fff}.round-won .animation-text{color:#fff}.round-won .winner-text{color:#fff;text-shadow:2px 2px 4px rgba(0,0,0,.3)}.round-won .sub-text{color:#ffffffe6}.round-won .animation-icon{animation:confetti .8s ease-in-out}.cards-dealt{background:linear-gradient(135deg,#e0e7ff,#818cf8);border:3px solid #6366f1}.cards-dealt .animation-icon{animation:shuffle .6s ease-in-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:scale(.8) translateY(-20px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}@keyframes bounce{0%,to{transform:translateY(0)}25%{transform:translateY(-20px)}50%{transform:translateY(0)}75%{transform:translateY(-10px)}}@keyframes spin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.2)}to{transform:rotate(360deg) scale(1)}}@keyframes confetti{0%{transform:scale(1) rotate(0)}25%{transform:scale(1.2) rotate(10deg)}50%{transform:scale(1) rotate(-10deg)}75%{transform:scale(1.2) rotate(10deg)}to{transform:scale(1) rotate(0)}}@keyframes shuffle{0%,to{transform:translate(0)}25%{transform:translate(-10px) rotate(-5deg)}75%{transform:translate(10px) rotate(5deg)}}
