:root{--bg-primary: #0a0e17;--bg-secondary: #141b2d;--bg-card: #1a2332;--bg-hover: #243047;--text-primary: #ffffff;--text-secondary: #8892a4;--text-muted: #5a6478;--accent-primary: #6366f1;--accent-secondary: #8b5cf6;--accent-gold: #f59e0b;--accent-green: #10b981;--accent-red: #ef4444;--border-color: #2d3748;--shadow-color: rgba(0, 0, 0, .4);--gradient-primary: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--gradient-gold: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%);--gradient-dark: linear-gradient(180deg, #141b2d 0%, #0a0e17 100%);--radius-sm: 6px;--radius-md: 12px;--radius-lg: 20px;--radius-full: 9999px;--font-family: "Noto Sans SC", system-ui, -apple-system, sans-serif;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--font-family);background:var(--gradient-dark);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased}#app{width:100%;height:100%;position:relative}.screen{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;transition:opacity var(--transition-normal)}.screen.hidden{opacity:0;pointer-events:none}.login-container{text-align:center}.logo h1{font-size:4rem;font-weight:700;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.25rem;text-shadow:0 0 60px rgba(99,102,241,.4)}.logo .subtitle{font-size:1.1rem;color:var(--text-secondary);margin-bottom:3rem}.login-card{background:var(--bg-card);padding:2.5rem;border-radius:var(--radius-lg);border:1px solid var(--border-color);box-shadow:0 20px 60px var(--shadow-color);min-width:320px}.user-info{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--bg-secondary);border-radius:var(--radius-md);margin-bottom:1.5rem}.avatar{width:48px;height:48px;border-radius:var(--radius-full);object-fit:cover}.avatar-small{width:32px;height:32px;border-radius:var(--radius-full);object-fit:cover}.ldc-balance,.ldc-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .75rem;background:var(--gradient-gold);border-radius:var(--radius-full);font-weight:600;font-size:.875rem;color:#1a1a1a}.ldc-icon{font-size:1rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.875rem 1.75rem;font-size:1rem;font-weight:600;font-family:inherit;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);width:100%;margin-bottom:.75rem}.btn:last-child{margin-bottom:0}.btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px var(--shadow-color)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--gradient-primary);color:#fff}.btn-secondary{background:var(--bg-hover);color:var(--text-primary);border:1px solid var(--border-color)}.btn-gold{background:var(--gradient-gold);color:#1a1a1a}.btn-action{background:transparent;border:2px solid var(--border-color);color:var(--text-secondary);padding:.625rem 1.25rem;width:auto;margin-bottom:0}.btn-action:hover{border-color:var(--accent-primary);color:var(--accent-primary);transform:none}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.lobby-container{width:100%;max-width:900px;padding:2rem}.lobby-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.lobby-header h2{font-size:1.75rem;font-weight:700}.user-bar{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;background:var(--bg-card);border-radius:var(--radius-full);border:1px solid var(--border-color)}.game-modes{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.mode-card{background:var(--bg-card);padding:2rem;border-radius:var(--radius-lg);border:1px solid var(--border-color);text-align:center;transition:all var(--transition-normal)}.mode-card:hover{border-color:var(--accent-primary);transform:translateY(-4px);box-shadow:0 20px 40px var(--shadow-color)}.mode-icon{font-size:3rem;margin-bottom:1rem}.mode-card h3{font-size:1.25rem;margin-bottom:.5rem}.mode-card p{color:var(--text-secondary);font-size:.9rem;margin-bottom:1.5rem}.stake-selector{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1rem}.stake-selector label{color:var(--text-secondary)}.stake-selector select{padding:.5rem 1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:inherit;font-size:.9rem;cursor:pointer}.mode-card .btn{width:auto;padding:.75rem 2rem}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border-color);padding:2.5rem;min-width:400px;text-align:center;animation:modalIn .3s ease}@keyframes modalIn{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.result-content h2{font-size:2rem;margin-bottom:1.5rem}.result-details{margin-bottom:2rem}.team-result{font-size:1.1rem;color:var(--text-secondary);margin-bottom:1rem}.ldc-change{font-size:2rem;font-weight:700}.ldc-change.win{color:var(--accent-green)}.ldc-change.lose{color:var(--accent-red)}.result-actions{display:flex;gap:1rem;justify-content:center}.result-actions .btn{width:auto;padding:.75rem 1.5rem;margin:0}.text-center{text-align:center}.text-muted{color:var(--text-muted)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-bounce{animation:bounce 1s ease-in-out infinite}.room-code-input{margin-bottom:1rem}.room-code-input input{width:100%;padding:.75rem 1rem;font-size:1.25rem;font-family:monospace;text-align:center;text-transform:uppercase;letter-spacing:.5em;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--transition-fast)}.room-code-input input:focus{outline:none;border-color:var(--accent-primary)}.room-code-input input::placeholder{letter-spacing:normal;font-size:.9rem}.room-container{width:100%;max-width:600px;padding:2rem}.room-header{text-align:center;margin-bottom:2rem}.room-header h2{font-size:1.5rem;margin-bottom:.5rem}.room-header h2 span{font-family:monospace;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:.2em}.room-stake{color:var(--text-secondary)}.room-players{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-bottom:2rem}.room-player-slot{background:var(--bg-card);border:2px solid var(--border-color);border-radius:var(--radius-md);padding:1.5rem;text-align:center;transition:all var(--transition-fast)}.room-player-slot.occupied{border-color:var(--accent-primary)}.room-player-slot.ready{border-color:var(--accent-green);background:#10b9811a}.slot-avatar{font-size:2.5rem;margin-bottom:.5rem}.slot-name{font-size:.9rem;color:var(--text-secondary);margin-bottom:.25rem}.room-player-slot.occupied .slot-name{color:var(--text-primary);font-weight:600}.slot-status{font-size:.8rem;color:var(--accent-green)}.room-actions{display:flex;gap:1rem;margin-bottom:1.5rem}.room-actions .btn{flex:1;margin:0}.room-chat{background:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border-color);overflow:hidden}.chat-messages{height:150px;padding:1rem;overflow-y:auto;font-size:.85rem}.chat-message{margin-bottom:.5rem}.chat-message .name{color:var(--accent-primary);font-weight:600}.chat-message .text{color:var(--text-secondary)}.chat-input{display:flex;border-top:1px solid var(--border-color)}.chat-input input{flex:1;padding:.75rem 1rem;background:transparent;border:none;color:var(--text-primary);font-family:inherit}.chat-input input:focus{outline:none}.chat-input .btn{width:auto;margin:0;border-radius:0;padding:.75rem 1.25rem}.sort-controls{display:flex;justify-content:center;gap:.75rem;margin:.5rem 0}.btn-sort{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .75rem;background:#ffffff1a;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.8rem;cursor:pointer;transition:all var(--transition-fast);width:auto;margin:0}.btn-sort:hover{background:#ffffff26;color:var(--text-primary);transform:none}.sort-icon{font-size:.9rem}.suggestions-panel{display:none;position:absolute;bottom:100%;left:50%;transform:translate(-50%);width:90%;max-width:600px;max-height:200px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);margin-bottom:.5rem;overflow:hidden;z-index:100;animation:slideUp .2s ease}.suggestions-panel.visible{display:block}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.suggestions-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.suggestions-title{font-weight:600;font-size:.9rem}.btn-close-suggestions{background:none;border:none;color:var(--text-secondary);font-size:1.2rem;cursor:pointer;padding:0;line-height:1}.btn-close-suggestions:hover{color:var(--text-primary)}.suggestions-list{display:flex;flex-wrap:wrap;gap:.5rem;padding:.75rem;max-height:150px;overflow-y:auto}.suggestion-item{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .75rem;background:var(--bg-hover);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:.85rem;cursor:pointer;transition:all var(--transition-fast)}.suggestion-item:hover{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.suggestion-item.bomb{border-color:var(--accent-red);background:#ef444426}.suggestion-item.bomb:hover{background:var(--accent-red)}.suggestion-item.flush{border-color:var(--accent-gold);background:#f59e0b26}.suggestion-item.flush:hover{background:var(--accent-gold);color:#1a1a1a}.suggestion-type{font-weight:600}.suggestion-value{color:var(--text-secondary);font-size:.8rem}@media (min-width: 900px){.game-modes{grid-template-columns:repeat(3,1fr)}}@media (max-width: 600px){.game-modes,.room-players{grid-template-columns:1fr}}.card{--card-width: 70px;--card-height: 100px;--card-radius: 10px;position:relative;width:var(--card-width);height:var(--card-height);border-radius:var(--card-radius);background:linear-gradient(145deg,#fff,#f8fafc);box-shadow:0 4px 12px #00000040,0 8px 24px #00000026,inset 0 1px #fffc;cursor:pointer;transition:all .15s ease;-webkit-user-select:none;user-select:none;flex-shrink:0;border:1px solid rgba(0,0,0,.1)}.card:hover{transform:translateY(-8px);box-shadow:0 8px 20px #0003,0 12px 32px #00000026}.card.selected{transform:translateY(-20px);box-shadow:0 12px 24px #6366f14d,0 0 0 3px var(--accent-primary)}.card.disabled{opacity:.5;cursor:not-allowed}.card.disabled:hover{transform:none}.card-inner{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;padding:6px;border-radius:var(--card-radius);overflow:hidden}.card-corner{display:flex;flex-direction:column;align-items:center;line-height:1}.card-corner.top-left{align-items:flex-start}.card-corner.bottom-right{position:absolute;right:6px;bottom:6px;transform:rotate(180deg)}.card-rank{font-size:1.1rem;font-weight:700}.card-suit-small{font-size:.9rem}.card-suit-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:2rem}.card.hearts,.card.diamonds{color:#dc2626}.card.spades,.card.clubs{color:#1a1a1a}.card.joker-red{color:#dc2626}.card.joker-black{color:#1a1a1a}.card.joker .card-inner{display:flex;align-items:center;justify-content:center;padding:0}.card.joker.joker-red{background:url(./joker_big-Bl35Qh4I.png) center/cover no-repeat}.card.joker.joker-red .card-inner{background:transparent}.card.joker.joker-black{background:url(./joker_small-CbK46hcb.png) center/cover no-repeat}.card.joker.joker-black .card-inner{background:transparent}.card.joker .joker-text{display:none}.card.back{background:url(./card_back-ZbEafzBW.png) center/cover no-repeat;cursor:default}.card.back:hover{transform:none}.card.back:before{display:none}.card.back:after{display:none}.card.small{--card-width: 40px;--card-height: 56px;--card-radius: 4px}.card.small .card-rank{font-size:.75rem}.card.small .card-suit-small{font-size:.6rem}.card.small .card-suit-center{font-size:1rem}.card.small.back:after{font-size:1rem}.card.vertical{margin-bottom:-70px}.card.vertical:last-child{margin-bottom:0}.card.wild{box-shadow:0 2px 8px #00000026,0 0 0 3px var(--accent-gold),0 0 20px #f59e0b66}.card.wild:before{content:"⭐";position:absolute;top:-8px;right:-8px;font-size:1rem;z-index:10}.card.level-card:after{content:"级";position:absolute;bottom:-4px;right:-4px;background:var(--accent-primary);color:#fff;font-size:.6rem;padding:2px 4px;border-radius:4px;font-weight:600}.played-card{animation:playCard .3s ease forwards}@keyframes playCard{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.bomb-effect{animation:bombShake .5s ease}@keyframes bombShake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}.bomb-overlay{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:100;display:flex;align-items:center;justify-content:center}.bomb-text{font-size:4rem;font-weight:700;color:var(--accent-red);text-shadow:0 0 20px rgba(239,68,68,.8),0 0 40px rgba(239,68,68,.6);animation:bombPop .8s ease forwards}@keyframes bombPop{0%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(1.5)}}.hand-container{display:flex;justify-content:center;padding:10px}.hand-container .card{margin-left:-35px}.hand-container .card:first-child{margin-left:0}.cards-stack{display:flex;gap:-20px}.cards-stack .card{margin-left:-30px}.cards-stack .card:first-child{margin-left:0}.game-table{width:100vw;height:100vh;background:url(./table_bg-CrAU9Pyu.png) center/cover no-repeat;position:relative;overflow:hidden}.game-table:before{display:none}.game-table:after{content:"";position:absolute;top:15px;right:15px;bottom:15px;left:15px;border:6px solid rgba(30,41,59,.8);border-radius:40px;box-shadow:inset 0 0 30px #0000004d,0 0 20px #00000080;pointer-events:none}.game-info-bar{position:absolute;top:30px;left:50%;transform:translate(-50%);display:flex;gap:2rem;padding:.75rem 2rem;background:#0f172ad9;border-radius:50px;border:2px solid rgba(99,102,241,.3);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 4px 20px #0006;z-index:50}.game-info-bar>div{display:flex;align-items:center;gap:.5rem}.game-info-bar .label{color:#94a3b8;font-size:.85rem}.level-value{font-size:1.75rem;font-weight:800;background:linear-gradient(135deg,#fbbf24,#f59e0b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.wild-card{display:inline-flex}.stake-value{color:#fbbf24;font-weight:700;font-size:1.1rem}.player-area{position:absolute;display:flex;flex-direction:column;align-items:center}.player-info{display:flex;align-items:center;gap:.75rem;padding:.6rem 1.25rem;background:linear-gradient(135deg,#0f172ae6,#1e293be6);border-radius:25px;border:2px solid rgba(148,163,184,.2);box-shadow:0 4px 15px #0000004d;margin-bottom:.75rem}.player-avatar{width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:50%}.player-name{font-size:.95rem;font-weight:600;color:#e2e8f0}.card-count{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;font-size:.8rem;font-weight:700;padding:4px 12px;border-radius:20px;box-shadow:0 2px 8px #6366f166}.player-top{top:90px;left:50%;transform:translate(-50%)}.player-top .player-cards{display:flex;justify-content:center}.player-top .player-cards .card{margin-left:-20px}.player-top .player-cards .card:first-child{margin-left:0}.player-left{left:50px;top:50%;transform:translateY(-50%);flex-direction:row}.player-left .player-info{writing-mode:vertical-rl;text-orientation:mixed;padding:1.25rem .6rem;margin-bottom:0;margin-right:.75rem}.player-left .player-cards.vertical{display:flex;flex-direction:column;align-items:center}.player-left .player-cards.vertical .card{margin-top:-45px}.player-left .player-cards.vertical .card:first-child{margin-top:0}.player-right{right:50px;top:50%;transform:translateY(-50%);flex-direction:row-reverse}.player-right .player-info{writing-mode:vertical-lr;text-orientation:mixed;padding:1.25rem .6rem;margin-bottom:0;margin-left:.75rem}.player-right .player-cards.vertical{display:flex;flex-direction:column;align-items:center}.player-right .player-cards.vertical .card{margin-top:-45px}.player-right .player-cards.vertical .card:first-child{margin-top:0}.player-bottom{bottom:0;left:50%;transform:translate(-50%);width:100%;padding:0 30px 25px}.player-hand{display:flex;justify-content:center;align-items:flex-end;padding:15px 0;min-height:160px;background:linear-gradient(180deg,transparent 0%,rgba(15,23,42,.6) 100%);border-radius:20px 20px 0 0}.player-hand .card{margin-left:-15px;transition:all .15s ease}.player-hand .card:first-child{margin-left:0}.player-hand .card-stack-group .card{margin-left:0!important}.action-buttons{display:flex;justify-content:center;gap:1rem;margin-top:.75rem}.action-buttons .btn{min-width:90px;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;border-radius:25px;border:none;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 15px #0000004d}.action-buttons .btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff}.action-buttons .btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #6366f180}.action-buttons .btn-secondary{background:#1e293be6;color:#e2e8f0;border:2px solid rgba(148,163,184,.3)}.action-buttons .btn-secondary:hover{background:#334155e6;transform:translateY(-2px)}#btn-play{min-width:140px;background:linear-gradient(135deg,#10b981,#059669)}#btn-play:hover{box-shadow:0 6px 20px #10b98180}#btn-play:disabled{background:#33415580;color:#64748b;cursor:not-allowed;transform:none}.center-area{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:1rem}.current-play{display:flex;justify-content:center;min-height:120px;min-width:320px;padding:15px;background:#0f172a66;border-radius:20px;border:2px solid rgba(148,163,184,.15)}.current-play .card{margin-left:-22px}.current-play .card:first-child{margin-left:0}.turn-indicator{padding:.6rem 1.75rem;background:#0f172ad9;border-radius:25px;font-size:1rem;font-weight:600;color:#94a3b8;border:2px solid rgba(148,163,184,.2)}.turn-indicator.active{background:linear-gradient(135deg,#f59e0b,#fbbf24);color:#1e293b;border:none;animation:pulse 1.5s ease-in-out infinite;box-shadow:0 4px 20px #f59e0b80}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}.played-cards{display:flex;justify-content:center;min-height:70px;margin:.5rem 0}.played-cards .card{--card-width: 55px;--card-height: 78px;margin-left:-18px}.played-cards .card:first-child{margin-left:0}.player-area.current-turn .player-info{border-color:#fbbf24;box-shadow:0 0 20px #fbbf2480}.player-area.current-turn{animation:none}.pass-indicator{position:absolute;background:#0f172ae6;color:#94a3b8;padding:.6rem 1.25rem;border-radius:15px;font-size:.95rem;font-weight:600;border:2px solid rgba(148,163,184,.2)}.player-area.finished .player-info:before{content:"👑";margin-right:.5rem;font-size:1.25rem}.player-area.first-place .player-info{background:linear-gradient(135deg,#f59e0b4d,#fbbf2433);border-color:#fbbf24}@media (max-width: 1200px){.player-hand .card{--card-width: 65px;--card-height: 92px;margin-left:-26px}.player-left,.player-right{display:none}}@media (max-width: 768px){.game-info-bar{flex-wrap:wrap;justify-content:center;gap:.75rem;padding:.6rem 1.25rem}.player-hand .card{--card-width: 55px;--card-height: 78px;margin-left:-24px}.action-buttons{flex-wrap:wrap;gap:.5rem}.action-buttons .btn{min-width:70px;padding:.6rem 1rem;font-size:.85rem}}
