.app{width:100%;min-height:100vh;color:#fff}.welcome-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;text-align:center}.welcome-screen h1{font-size:3rem;margin-bottom:1rem}.welcome-screen p{font-size:1.2rem;margin-bottom:2rem;opacity:.9}.create-game-btn{padding:1rem 2rem;font-size:1.2rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:transform .2s}.create-game-btn:hover{transform:scale(1.05)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:#0000004d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.game-phase{background:#ffd7004d;padding:.3rem 1rem;border-radius:20px;font-weight:700;border:2px solid #ffd700;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.app-header h1{font-size:1.5rem}.header-info{display:flex;gap:1.5rem;align-items:center}.status-connected{color:#4ade80}.status-disconnected{color:#f87171}.main-content{display:grid;grid-template-columns:280px 1fr;gap:1rem;padding:1rem;max-width:1920px;margin:0 auto;height:calc(100vh - 120px)}.left-panel{background:#ffffff0d;border-radius:12px;padding:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden}.center-panel{background:#ffffff0d;border-radius:12px;padding:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden}.bottom-panel{padding:0 1rem 1rem;max-width:1920px;margin:0 auto}.game-over-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000}.game-over-modal{background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem;border-radius:12px;text-align:center;min-width:400px}.game-over-modal h2{font-size:2rem;margin-bottom:1.5rem}.winners{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.winner-item{display:flex;justify-content:space-between;padding:1rem;background:#fff3;border-radius:8px}.balance{font-weight:700;font-size:1.2rem}.game-over-modal button{padding:.75rem 2rem;font-size:1rem;background:#fff;color:#667eea;border:none;border-radius:8px;cursor:pointer;font-weight:700}@media(max-width:1200px){.main-content{grid-template-columns:1fr}}.welcome-icon{font-size:120px;margin-bottom:24px;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}.welcome-screen .subtitle{font-size:18px;margin-bottom:32px;opacity:.8}.live-status{display:flex;align-items:center;gap:12px;margin-bottom:40px;padding:12px 24px;background:#ffffff1a;border-radius:24px}.status-indicator{width:12px;height:12px;border-radius:50%;animation:pulse-indicator 2s ease-in-out infinite}.status-indicator.offline{background:#95a5a6}.status-indicator.online{background:#27ae60}@keyframes pulse-indicator{0%,to{opacity:1}50%{opacity:.5}}.live-status span{font-size:16px;font-weight:500}.welcome-footer{margin-top:48px;opacity:.7}.welcome-footer p{margin:8px 0;font-size:14px}.admin-link a{color:gold;text-decoration:none;font-weight:600;transition:color .3s}.admin-link a:hover{color:#ffed4e}:root{--player-min-size: 80px;--player-max-size: 250px;--center-min-size: 60px}.game-table{position:relative;width:100%;min-height:0;display:flex;flex-direction:column;background:radial-gradient(ellipse at center,#2d5a3d,#1a3a28);border-radius:12px;padding:1rem 1.5rem 1.5rem;box-shadow:0 8px 32px #00000080,inset 0 0 100px #0000004d;background-image:radial-gradient(ellipse at center,#2d5a3d,#1a3a28),repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(255,255,255,.03) 2px,rgba(255,255,255,.03) 4px)}.game-table.loading{display:flex;align-items:center;justify-content:center;font-size:1.5rem;color:#ffffffb3}.table-info{display:flex;gap:2rem;justify-content:center;margin-bottom:1rem;padding:.75rem;background:#0000004d;border-radius:8px}.info-item{display:flex;gap:.5rem;align-items:center}.current-action{display:flex;gap:.5rem;align-items:center;padding:.25rem 1rem;background:#ffffff1a;border-radius:6px}.action-tile{padding:.25rem .5rem;background:#f39c12;border-radius:4px;font-weight:700}.players-grid{position:relative;--table-size: min(800px, calc(100vh - 180px) , calc(100vw - 320px) );width:var(--table-size);height:var(--table-size);margin:0 auto}.player-area{padding:.75rem;background:#0000004d;border-radius:8px;transition:all .3s;border:2px solid rgba(255,255,255,.1);display:flex;flex-direction:column;container-type:inline-size;overflow:hidden}.player-area.active{background:#ffd70026;box-shadow:0 0 25px #ffd70080;border-color:#ffd70080}.player-area.winner{background:#ffd70033!important;border:3px solid #ffd700!important;box-shadow:0 0 20px #ffd70099,inset 0 0 20px #ffd70033;animation:hu-glow 2s ease-in-out infinite}@keyframes hu-glow{0%,to{box-shadow:0 0 20px #ffd70099,inset 0 0 20px #ffd70033}50%{box-shadow:0 0 40px #ffd700cc,inset 0 0 30px #ffd7004d}}.hu-indicator{position:absolute;top:10px;right:10px;z-index:100}.victory-sparkle{position:absolute;top:50%;left:50%;width:100px;height:100px;background:radial-gradient(circle,#ffd700,transparent);animation:sparkle 1s ease-out forwards;pointer-events:none;z-index:50}.hand-area{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px}.open-melds-left{display:flex;flex-direction:row;gap:8px;padding:6px;background:#ffd7001a;border-radius:4px;border:1px dashed rgba(255,215,0,.3);flex-wrap:wrap}.meld-group{display:inline-flex;gap:2px;padding:3px;background:#0003;border-radius:4px;border:1px solid rgba(255,215,0,.2)}@keyframes sparkle{0%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}to{opacity:0;transform:translate(-50%,-50%) scale(2) rotate(180deg)}}.player-south{position:absolute;bottom:0;left:10%;right:10%;height:40%}.player-north{position:absolute;top:0;left:10%;right:10%;height:40%}.player-west{position:absolute;width:80%;height:40%;left:-55%;top:70%;transform:rotate(90deg) translate(-50%);transform-origin:center center}.player-east{position:absolute;width:80%;height:40%;right:-55%;top:70%;transform:rotate(-90deg) translate(50%);transform-origin:center center}.player-header{display:flex;align-items:center;gap:.3rem;margin-bottom:.3rem;padding-bottom:.3rem;border-bottom:1px solid rgba(255,255,255,.1);flex-wrap:wrap;min-height:0}.player-header-middle{margin-top:.5rem;margin-bottom:.5rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1)}.wind-label{background:linear-gradient(135deg,#e74c3c,#c0392b);padding:.25rem .6rem;border-radius:4px;font-weight:700;font-size:.9rem;box-shadow:0 2px 4px #0000004d}.player-name{font-weight:700;font-size:1rem;flex:1}.missing-suit-badge{padding:.25rem .6rem;background:linear-gradient(135deg,#9b59b6cc,#8e44adcc);border-radius:10px;font-size:.75rem;font-weight:700;box-shadow:0 2px 4px #0000004d}.strategy-badge{display:inline-block;padding:.25rem .6rem;background:linear-gradient(135deg,#3498dbe6,#2980b9e6);color:#fff;border-radius:10px;font-size:.75rem;font-weight:700;box-shadow:0 2px 4px #0003}.model-badge{display:inline-block;padding:.25rem .6rem;background:linear-gradient(135deg,#2ecc71e6,#27ae60e6);color:#fff;border-radius:10px;font-size:.75rem;font-weight:700;cursor:help;box-shadow:0 2px 4px #0003}.hu-badge{padding:.25rem .6rem;background:#27ae60;border-radius:4px;font-size:.85rem;font-weight:700}.hand-tiles{display:flex;gap:3px;flex-wrap:nowrap;padding:4px}.hand-tiles .mahjong-tile{flex-shrink:0}.hand-tiles-south,.hand-tiles-east,.hand-tiles-north,.hand-tiles-west{flex-direction:row;justify-content:center;align-items:center;min-height:65px;overflow-x:auto;overflow-y:hidden}.hand-tiles::-webkit-scrollbar{width:4px;height:4px}.hand-tiles::-webkit-scrollbar-track{background:#0003;border-radius:2px}.hand-tiles::-webkit-scrollbar-thumb{background:#ffd7004d;border-radius:2px}.hand-tiles::-webkit-scrollbar-thumb:hover{background:#ffd70080}.no-tiles{color:#fff6;font-style:italic;font-size:.9rem}.tile-river-section{margin-top:.5rem;width:100%}.section-label{font-size:.8rem;opacity:.7;margin-bottom:.4rem;text-align:center}.tile-river{flex-direction:row;justify-content:flex-start}.player-south .tile-river-section,.player-east .tile-river-section,.player-west .tile-river-section{order:-1;margin-bottom:1.5rem;padding-top:.5rem;border-top:2px solid rgba(255,255,255,.15)}.player-north .tile-river-section{order:1;margin-top:1.5rem;padding-bottom:.5rem;border-bottom:2px solid rgba(255,255,255,.15)}.table-center{position:absolute;inset:40%;display:flex;align-items:center;justify-content:center;text-align:center;pointer-events:none;background:#0006;padding:1rem;border-radius:50%;border:3px solid rgba(255,255,255,.15)}.deck-icon{font-size:3rem;opacity:.4;margin-bottom:.3rem}.round-display{font-size:1.2rem;font-weight:700;opacity:.7;margin-bottom:.2rem}.remaining-tiles{font-size:.9rem;opacity:.6}.response-thinking{position:absolute;top:10px;right:10px;background:#ffc107f2;color:#333;padding:8px 12px;border-radius:8px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;box-shadow:0 4px 12px #ffc10766;z-index:100;animation:pulse-thinking 1.5s ease-in-out infinite}.thinking-icon{font-size:18px;animation:rotate-thinking 2s linear infinite}.thinking-text{white-space:nowrap}@keyframes pulse-thinking{0%,to{transform:scale(1);box-shadow:0 4px 12px #ffc10766}50%{transform:scale(1.05);box-shadow:0 6px 16px #ffc10799}}@keyframes rotate-thinking{0%{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}to{transform:rotate(0)}}.player-area.responding{box-shadow:0 0 20px #ffc10799;border:2px solid rgba(255,193,7,.8)}.self-action-thinking{position:absolute;top:10px;left:10px;background:#6aa8fff2;color:#fff;padding:8px 12px;border-radius:8px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;box-shadow:0 4px 12px #6aa8ff66;z-index:100;animation:pulse-self-thinking 1.5s ease-in-out infinite}.self-action-thinking .thinking-icon{font-size:18px;animation:float-thinking 2s ease-in-out infinite}.self-action-thinking .thinking-text{white-space:nowrap;display:flex;flex-direction:column;align-items:flex-start;gap:2px}.self-action-thinking .available-actions{font-size:11px;opacity:.9;font-weight:400}@keyframes pulse-self-thinking{0%,to{transform:scale(1);box-shadow:0 4px 12px #6aa8ff66}50%{transform:scale(1.05);box-shadow:0 6px 16px #6aa8ff99}}@keyframes float-thinking{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.player-area.self-thinking{box-shadow:0 0 20px #6aa8ff99;border:2px solid rgba(106,168,255,.8)}.response-notification{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:linear-gradient(135deg,#ff9800f2,#ffc107f2);color:#fff;padding:20px 30px;border-radius:16px;box-shadow:0 8px 24px #0000004d;z-index:1000;text-align:center;min-width:250px;animation:slideIn .3s ease-out}.response-tile{font-size:20px;font-weight:700;margin-bottom:8px}.response-message{font-size:15px;margin-bottom:8px;opacity:.9}.response-countdown{font-size:32px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3);animation:countdown-pulse 1s ease-in-out infinite}@keyframes countdown-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes slideIn{0%{opacity:0;transform:translate(-50%,-60%)}to{opacity:1;transform:translate(-50%,-50%)}}.response-result{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#000000e6;color:#fff;padding:24px 36px;border-radius:16px;box-shadow:0 8px 32px #00000080;z-index:1000;text-align:center;font-size:24px;font-weight:700;animation:popIn .4s cubic-bezier(.68,-.55,.265,1.55)}.result-hu{color:gold;text-shadow:0 0 10px rgba(255,215,0,.8)}.result-gang{color:#ff6b6b;text-shadow:0 0 10px rgba(255,107,107,.8)}.result-peng{color:#4ecdc4;text-shadow:0 0 10px rgba(78,205,196,.8)}@keyframes popIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}70%{transform:translate(-50%,-50%) scale(1.1)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@container (max-width: 150px){.hand-tiles{gap:0px}.hand-tiles .mahjong-tile,.tile-river .mahjong-tile{transform:scale(.5);transform-origin:center}.meld-group{gap:0px}.meld-group .mahjong-tile{transform:scale(.5);transform-origin:center}.player-header{font-size:.65rem;gap:.2rem}.wind-label,.strategy-badge,.model-badge,.missing-suit-badge{padding:.1rem .3rem;font-size:.55rem}}@container (min-width: 150px) and (max-width: 200px){.hand-tiles{gap:1px}.hand-tiles .mahjong-tile,.tile-river .mahjong-tile{transform:scale(.6);transform-origin:center}.meld-group{gap:1px}.meld-group .mahjong-tile{transform:scale(.6);transform-origin:center}.player-header{font-size:.7rem;gap:.25rem}.wind-label,.strategy-badge,.model-badge,.missing-suit-badge{padding:.15rem .35rem;font-size:.6rem}}@container (min-width: 200px) and (max-width: 280px){.hand-tiles{gap:1px}.hand-tiles .mahjong-tile,.tile-river .mahjong-tile{transform:scale(.7);transform-origin:center}.meld-group{gap:1px}.meld-group .mahjong-tile{transform:scale(.7);transform-origin:center}.player-header{font-size:.75rem}.wind-label{padding:.15rem .4rem;font-size:.75rem}}@container (min-width: 280px) and (max-width: 350px){.hand-tiles{gap:2px}.hand-tiles .mahjong-tile,.tile-river .mahjong-tile{transform:scale(.85);transform-origin:center}.meld-group{gap:1px}.meld-group .mahjong-tile{transform:scale(.85);transform-origin:center}.player-header{font-size:.85rem}}@container (min-width: 350px){.hand-tiles{gap:3px}.hand-tiles .mahjong-tile,.tile-river .mahjong-tile{transform:scale(1)}.meld-group{gap:2px}.meld-group .mahjong-tile{transform:scale(1)}}.mahjong-tile{display:inline-block;cursor:pointer;transition:all .2s ease;position:relative;user-select:none;-webkit-user-select:none;background:#fff;border-radius:4px;box-shadow:0 2px 4px #00000026}.mahjong-tile.normal{width:45px;height:60px}.mahjong-tile.small{width:32px;height:42px}.mahjong-tile.large{width:55px;height:75px}.mahjong-tile.rotate-0{transform:rotate(0);transform-origin:center}.mahjong-tile.rotate-90{transform:rotate(90deg);transform-origin:center}.mahjong-tile.rotate-180{transform:rotate(180deg);transform-origin:center}.mahjong-tile.rotate-270{transform:rotate(270deg);transform-origin:center}.mahjong-tile.rotate-0:hover{transform:rotate(0) translateY(-5px);z-index:10}.mahjong-tile.rotate-90:hover{transform:rotate(90deg) translate(5px);z-index:10}.mahjong-tile.rotate-180:hover{transform:rotate(180deg) translateY(5px);z-index:10}.mahjong-tile.rotate-270:hover{transform:rotate(270deg) translate(-5px);z-index:10}.mahjong-tile.highlight.rotate-0{animation:pulse-0 1s ease-in-out infinite}.mahjong-tile.highlight.rotate-90{animation:pulse-90 1s ease-in-out infinite}.mahjong-tile.highlight.rotate-180{animation:pulse-180 1s ease-in-out infinite}.mahjong-tile.highlight.rotate-270{animation:pulse-270 1s ease-in-out infinite}@keyframes pulse-0{0%,to{transform:rotate(0) scale(1)}50%{transform:rotate(0) scale(1.1)}}@keyframes pulse-90{0%,to{transform:rotate(90deg) scale(1)}50%{transform:rotate(90deg) scale(1.1)}}@keyframes pulse-180{0%,to{transform:rotate(180deg) scale(1)}50%{transform:rotate(180deg) scale(1.1)}}@keyframes pulse-270{0%,to{transform:rotate(270deg) scale(1)}50%{transform:rotate(270deg) scale(1.1)}}.tile-image{width:100%;height:100%;object-fit:contain;pointer-events:none;border-radius:3px;box-shadow:2px 3px 6px #0000004d,inset -1px -1px 3px #0000001a}.mahjong-tile.face-down .tile-image{filter:none}.mahjong-tile.new-draw.rotate-0{animation:new-draw-pulse-0 .8s ease-in-out 2;box-shadow:0 0 20px gold;z-index:20}.mahjong-tile.new-draw.rotate-90{animation:new-draw-pulse-90 .8s ease-in-out 2;box-shadow:0 0 20px gold;z-index:20}.mahjong-tile.new-draw.rotate-180{animation:new-draw-pulse-180 .8s ease-in-out 2;box-shadow:0 0 20px gold;z-index:20}.mahjong-tile.new-draw.rotate-270{animation:new-draw-pulse-270 .8s ease-in-out 2;box-shadow:0 0 20px gold;z-index:20}@keyframes new-draw-pulse-0{0%,to{transform:rotate(0) translateY(-5px) scale(1);box-shadow:0 0 20px gold}50%{transform:rotate(0) translateY(-8px) scale(1.1);box-shadow:0 0 30px gold}}@keyframes new-draw-pulse-90{0%,to{transform:rotate(90deg) translate(5px) scale(1);box-shadow:0 0 20px gold}50%{transform:rotate(90deg) translate(8px) scale(1.1);box-shadow:0 0 30px gold}}@keyframes new-draw-pulse-180{0%,to{transform:rotate(180deg) translateY(5px) scale(1);box-shadow:0 0 20px gold}50%{transform:rotate(180deg) translateY(8px) scale(1.1);box-shadow:0 0 30px gold}}@keyframes new-draw-pulse-270{0%,to{transform:rotate(270deg) translate(-5px) scale(1);box-shadow:0 0 20px gold}50%{transform:rotate(270deg) translate(-8px) scale(1.1);box-shadow:0 0 30px gold}}.new-badge{position:absolute;top:-8px;right:-8px;background:linear-gradient(135deg,gold,#ffed4e);color:#d32f2f;font-size:10px;font-weight:700;padding:2px 6px;border-radius:10px;border:2px solid #fff;box-shadow:0 2px 8px #ffd70099;z-index:21;animation:badge-bounce .5s ease-out}@keyframes badge-bounce{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}.mahjong-tile.dimmed{opacity:.4;filter:grayscale(50%);position:relative}.mahjong-tile.dimmed .tile-image{opacity:.6}.forbidden-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:24px;z-index:10;animation:forbidden-appear .3s ease-out}@keyframes forbidden-appear{0%{transform:translate(-50%,-50%) scale(0)}to{transform:translate(-50%,-50%) scale(1)}}.tile-river{display:flex;gap:2px;padding:4px;min-height:35px;align-content:start;flex-wrap:wrap;width:100%;justify-content:flex-start}.tile-river .mahjong-tile{flex-shrink:0}.river-tile{display:flex;justify-content:center;align-items:center}.empty-river{width:100%;text-align:center;color:#fff6;font-size:.85em;padding:8px;font-style:italic}.hu-badge{display:flex;align-items:center;gap:8px;padding:8px 12px;background:linear-gradient(135deg,gold,#ffed4e);border:2px solid #fff;border-radius:20px;box-shadow:0 4px 12px #ffd70080;cursor:pointer;position:relative;animation:hu-badge-appear .5s ease-out;z-index:100}.hu-badge:hover{transform:scale(1.05);box-shadow:0 6px 16px #ffd700b3}@keyframes hu-badge-appear{0%{transform:scale(0) rotate(-180deg);opacity:0}50%{transform:scale(1.2) rotate(10deg)}to{transform:scale(1) rotate(0);opacity:1}}.hu-icon{font-size:24px;animation:icon-bounce 1s ease-in-out infinite}@keyframes icon-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.hu-info{display:flex;flex-direction:column;gap:2px}.hu-label{font-size:12px;font-weight:700;color:#d32f2f;text-shadow:0 1px 2px rgba(255,255,255,.8)}.hu-fan{font-size:16px;font-weight:700;color:#c62828;text-shadow:0 1px 2px rgba(255,255,255,.8)}.hu-tooltip{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:8px;padding:8px 12px;background:#000000e6;border-radius:8px;min-width:120px;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:1000}.hu-badge:hover .hu-tooltip{opacity:1}.fan-type{color:gold;font-size:12px;padding:4px 0;text-align:center;white-space:nowrap}.fan-type:not(:last-child){border-bottom:1px solid rgba(255,215,0,.3)}.balance-chart{background:#ffffff1a;border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.balance-chart h3{margin-bottom:1rem;font-size:1.3rem}.chart-placeholder{height:300px;display:flex;align-items:center;justify-content:center;color:#ffffff80;font-style:italic}.balance-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin-top:1rem}.balance-item{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#0000004d;border-radius:8px}.color-indicator{width:12px;height:12px;border-radius:50%}.balance-item .player-name{flex:1;font-weight:500}.balance-item .balance{font-weight:700;color:#4ade80}.balance-item .balance.low{color:#f87171}.ai-strategy-list{height:100%;display:flex;flex-direction:column;background:#ffffff0d;border-radius:8px;padding:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ai-strategy-list h3{margin-bottom:1rem;font-size:1.1rem;color:#fff;text-align:center;border-bottom:2px solid rgba(255,255,255,.1);padding-bottom:.5rem}.ai-items{flex:1;display:flex;flex-direction:column;gap:.75rem;overflow-y:auto}.ai-item{background:#0000004d;border-radius:8px;padding:.75rem;border-left:4px solid;transition:all .3s ease;position:relative}.ai-item.active{background:#ffd70026;box-shadow:0 0 15px #ffd7004d;transform:scale(1.02)}.ai-item.hu{background:#2ecc7133;border-left-color:#2ecc71!important}.ai-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.ai-name-section{display:flex;align-items:center;gap:.5rem}.wind-position{background:#ffffff26;padding:.15rem .4rem;border-radius:4px;font-size:.75rem;font-weight:700}.ai-name{font-weight:700;font-size:1rem}.ai-balance{font-weight:700;font-size:1.1rem}.ai-strategy-type{display:flex;align-items:center;gap:.5rem;padding:.4rem;border-radius:4px;margin-bottom:.5rem}.strategy-badge{padding:.2rem .5rem;border-radius:4px;font-size:.75rem;color:#000;font-weight:700}.strategy-desc{font-size:.8rem;opacity:.9}.ai-status{display:flex;gap:.75rem;margin-bottom:.5rem}.status-item{display:flex;gap:.25rem;font-size:.85rem}.status-item .label{opacity:.7}.status-item .value{font-weight:700}.hu-badge{background:#2ecc71;color:#fff;padding:.3rem .6rem;border-radius:4px;font-size:.85rem;font-weight:700;text-align:center;margin-top:.5rem}.current-decision{background:#0000004d;border-radius:6px;padding:.6rem;margin-top:.5rem;border:1px solid rgba(255,215,0,.3)}.decision-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem;flex-wrap:wrap}.decision-label{font-size:.75rem;opacity:.7}.decision-action{background:#3498db;padding:.2rem .5rem;border-radius:4px;font-size:.8rem;font-weight:700}.decision-tile{background:#f39c12;padding:.2rem .5rem;border-radius:4px;font-size:.8rem;font-weight:700}.decision-reasoning{font-size:.8rem;line-height:1.4;opacity:.9}.decision-reasoning p{margin:0}.waiting-indicator{display:flex;gap:.3rem;justify-content:center;padding:.5rem 0}.waiting-indicator .dot{width:6px;height:6px;background:#ffffff80;border-radius:50%;animation:bounce 1.4s infinite ease-in-out both}.waiting-indicator .dot:nth-child(1){animation-delay:-.32s}.waiting-indicator .dot:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.ai-items::-webkit-scrollbar{width:6px}.ai-items::-webkit-scrollbar-track{background:#0003;border-radius:3px}.ai-items::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.ai-items::-webkit-scrollbar-thumb:hover{background:#ffffff80}.history-section{margin-top:.75rem;border-top:1px solid rgba(255,255,255,.1);padding-top:.5rem}.history-section summary{cursor:pointer;padding:.5rem;background:#ffffff0d;border-radius:4px;-webkit-user-select:none;user-select:none;font-size:.85rem;transition:background .2s;list-style:none;display:flex;align-items:center;justify-content:space-between}.history-section summary::-webkit-details-marker{display:none}.history-section summary:after{content:"▼";font-size:.7rem;opacity:.6;transition:transform .2s}.history-section[open] summary:after{transform:rotate(-180deg)}.history-section summary:hover{background:#ffffff1a}.history-list{max-height:300px;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.5rem}.history-list::-webkit-scrollbar{width:4px}.history-list::-webkit-scrollbar-track{background:#0003;border-radius:2px}.history-list::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.history-list::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.history-item{background:#0000004d;padding:.5rem;border-radius:6px;border-left:3px solid rgba(255,255,255,.2);font-size:.85rem;transition:background .2s}.history-item:hover{background:#0006}.history-item:nth-child(1){border-left-color:gold}.history-item:nth-child(2){border-left-color:silver}.history-item:nth-child(3){border-left-color:#cd7f32}.history-meta{display:flex;justify-content:space-between;opacity:.7;font-size:.75rem;margin-bottom:.25rem}.history-meta .round{color:#f39c12}.history-meta .time{color:#95a5a6}.history-action{font-weight:700;margin-bottom:.25rem;color:#ecf0f1}.history-action strong{color:#e74c3c;padding:.1rem .3rem;background:#e74c3c33;border-radius:3px}.history-reasoning{font-size:.8rem;line-height:1.4;color:#ffffffb3;margin-top:.25rem;padding:.25rem;background:#0003;border-radius:3px}.phase-indicator{margin:8px 0}.phase-badge{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:12px;font-size:12px;font-weight:600;background:#ffffff1a;border:1px solid rgba(255,255,255,.2)}.phase-badge .badge-icon{font-size:14px}.phase-badge .badge-text{color:#fff}.phase-badge.thinking{animation:phase-pulse 1.5s ease-in-out infinite}@keyframes phase-pulse{0%,to{opacity:1}50%{opacity:.6}}.thinking-dots{display:flex;gap:3px;align-items:center}.thinking-dots span{width:4px;height:4px;background:#fff;border-radius:50%;animation:thinking 1.4s infinite}.thinking-dots span:nth-child(2){animation-delay:.2s}.thinking-dots span:nth-child(3){animation-delay:.4s}@keyframes thinking{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.missing-reasoning{margin-top:12px;padding:10px;background:#ffd7001a;border-radius:8px;border-left:3px solid #ffd700;animation:reasoning-appear .3s ease-out}@keyframes reasoning-appear{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.missing-reasoning .reasoning-label{font-size:12px;color:gold;font-weight:600;margin-bottom:6px}.missing-reasoning .reasoning-content{font-size:13px;color:#e0e0e0;line-height:1.5}.blood-battle-scoreboard{background:linear-gradient(135deg,#ff6b6b,#ee5a6f);border-radius:12px;padding:16px;margin-top:20px;box-shadow:0 4px 12px #ee5a6f66;animation:scoreboard-appear .5s ease-out}@keyframes scoreboard-appear{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.scoreboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid rgba(255,255,255,.3)}.scoreboard-title{font-size:16px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.hu-count{font-size:14px;font-weight:700;color:gold;background:#0000004d;padding:4px 12px;border-radius:12px}.hu-players-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.hu-player-card{display:flex;align-items:center;gap:12px;background:#fffffff2;padding:10px 12px;border-radius:8px;box-shadow:0 2px 8px #0000001a;animation:card-slide-in .4s ease-out forwards;opacity:0}@keyframes card-slide-in{0%{transform:translate(-20px);opacity:0}to{transform:translate(0);opacity:1}}.player-rank{font-size:18px;font-weight:700;color:#ff6b6b;min-width:30px}.player-details{display:flex;flex-direction:column;gap:4px;flex:1}.player-name{font-size:14px;font-weight:600;color:#333}.fan-badge{font-size:12px;font-weight:700;color:#fff;background:linear-gradient(135deg,#f39c12,#e67e22);padding:2px 8px;border-radius:10px;display:inline-block;width:fit-content}.balance-change{font-size:16px;font-weight:700;color:#27ae60;text-shadow:0 1px 2px rgba(0,0,0,.1)}.remaining-players{background:#0003;padding:12px;border-radius:8px;margin-top:8px}.battle-hint{font-size:13px;font-weight:700;color:gold;margin:0 0 8px;text-align:center;animation:hint-pulse 1.5s ease-in-out infinite}@keyframes hint-pulse{0%,to{opacity:1}50%{opacity:.7}}.remaining-names{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.remaining-name{font-size:12px;color:#fff;background:#fff3;padding:4px 10px;border-radius:12px;border:1px solid rgba(255,255,255,.3)}.game-over-celebration{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;display:flex;justify-content:center;align-items:center;z-index:9999;animation:overlay-appear .5s ease-out}@keyframes overlay-appear{0%{opacity:0}to{opacity:1}}.fireworks-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none}.firework{position:absolute;width:10px;height:10px;background:radial-gradient(circle,gold,#ff6b6b,#4ecdc4);border-radius:50%;animation:firework 3s ease-out infinite;box-shadow:0 0 20px currentColor}@keyframes firework{0%{transform:translateY(100vh) scale(0);opacity:1}50%{transform:translateY(20vh) scale(1);opacity:1}to{transform:translateY(20vh) scale(0);opacity:0}}.game-over-content{background:#fff;border-radius:20px;padding:40px;max-width:800px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000080;animation:content-zoom-in .6s ease-out}@keyframes content-zoom-in{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.game-over-title{font-size:36px;font-weight:700;text-align:center;margin:0 0 30px;background:linear-gradient(135deg,gold,#ff6b6b,#4ecdc4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:title-glow 2s ease-in-out infinite}@keyframes title-glow{0%,to{filter:brightness(1)}50%{filter:brightness(1.3)}}.winners-showcase{margin-bottom:30px}.winners-showcase h2{font-size:24px;color:#333;margin-bottom:20px;text-align:center}.winner-card{display:flex;align-items:center;gap:20px;background:linear-gradient(135deg,#fff5e6,#ffe4cc);padding:20px;border-radius:12px;margin-bottom:12px;box-shadow:0 4px 12px #ffd7004d;animation:slide-up .6s ease-out forwards;opacity:0}@keyframes slide-up{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.winner-rank{font-size:32px;font-weight:700;color:gold;text-shadow:2px 2px 4px rgba(0,0,0,.2);min-width:50px}.winner-info{flex:1;display:flex;flex-direction:column;gap:8px}.winner-name{font-size:20px;font-weight:700;color:#333}.winner-details{display:flex;flex-direction:column;gap:4px}.winner-fan{font-size:16px;font-weight:700;color:#e67e22}.winner-types{font-size:13px;color:#666}.winner-balance{display:flex;flex-direction:column;align-items:flex-end;font-size:24px;font-weight:700;color:#27ae60}.balance-label{font-size:12px;color:#999;font-weight:400}.final-ranking{margin-bottom:30px}.final-ranking h2{font-size:24px;color:#333;margin-bottom:20px;text-align:center}.ranking-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.ranking-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.ranking-table th{padding:12px;text-align:left;font-weight:700}.ranking-table tbody tr{border-bottom:1px solid #eee;transition:background .2s ease}.ranking-table tbody tr:hover{background:#f8f9fa}.ranking-table tbody tr.hu-row{background:linear-gradient(135deg,#fff5e6,#ffe4cc)}.ranking-table td{padding:12px}.rank{font-weight:700;color:#667eea}.profit{color:#27ae60;font-weight:700}.loss{color:#e74c3c;font-weight:700}.restart-btn{display:block;width:100%;padding:16px;font-size:18px;font-weight:700;color:#fff;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:12px;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #667eea66}.restart-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px #667eea99}.restart-btn:active{transform:translateY(0)}.exchange-phase-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000000d9;display:flex;justify-content:center;align-items:center;z-index:1000;animation:overlay-fade-in .5s ease-out;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.exchange-overlay-content{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:20px;padding:40px;max-width:800px;width:90%;box-shadow:0 20px 60px #00000080;animation:content-slide-up .6s ease-out}@keyframes content-slide-up{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.exchange-title{text-align:center;margin-bottom:30px}.exchange-title h2{font-size:32px;color:#fff;margin:0 0 15px;text-shadow:0 4px 8px rgba(0,0,0,.3)}.exchange-direction-badge{display:inline-flex;align-items:center;gap:10px;background:#fff3;padding:10px 20px;border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.direction-icon{font-size:28px;animation:rotate-direction 2s ease-in-out infinite}@keyframes rotate-direction{0%,to{transform:rotate(0)}50%{transform:rotate(15deg)}}.direction-text{font-size:18px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.exchange-status-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:30px}.exchange-player-card{background:#ffffff26;border-radius:12px;padding:20px;position:relative;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid rgba(255,255,255,.2);animation:card-appear .5s ease-out;animation-fill-mode:both}.exchange-player-card.player-0{animation-delay:.1s}.exchange-player-card.player-1{animation-delay:.2s}.exchange-player-card.player-2{animation-delay:.3s}.exchange-player-card.player-3{animation-delay:.4s}@keyframes card-appear{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.player-info{display:flex;align-items:center;gap:10px;margin-bottom:15px}.wind-badge{background:#ffffff4d;color:#fff;padding:4px 10px;border-radius:8px;font-size:12px;font-weight:700}.player-name{font-size:16px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.exchange-status{display:flex;align-items:center;gap:8px}.status-ready{display:flex;align-items:center;gap:8px;color:#4caf50;background:#4caf5033;padding:8px 12px;border-radius:8px;animation:ready-pulse 1.5s ease-in-out infinite}@keyframes ready-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.status-ready .status-icon{font-size:20px}.status-ready .status-text{font-weight:700;color:#fff}.status-thinking{display:flex;align-items:center;gap:8px;color:#ffa726;background:#ffa72633;padding:8px 12px;border-radius:8px}.status-thinking .status-icon{font-size:20px;animation:thinking-shake 1s ease-in-out infinite}@keyframes thinking-shake{0%,to{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}.status-thinking .status-text{font-weight:700;color:#fff}.thinking-animation{display:flex;gap:3px;align-items:center}.thinking-animation span{width:4px;height:4px;background:#fff;border-radius:50%;animation:thinking-dots 1.4s infinite}.thinking-animation span:nth-child(2){animation-delay:.2s}.thinking-animation span:nth-child(3){animation-delay:.4s}@keyframes thinking-dots{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.5)}}.exchange-arrow{position:absolute;color:gold;font-size:24px;animation:arrow-pulse 1s ease-in-out infinite}@keyframes arrow-pulse{0%,to{opacity:.5}50%{opacity:1}}.flying-tiles{position:absolute;display:flex;gap:5px;pointer-events:none}.tile-card{font-size:24px;animation:tile-fly 1.5s ease-out forwards;display:inline-block}.tile-card .mahjong-tile{filter:drop-shadow(0 4px 8px rgba(0,0,0,.4))}.tile-card:nth-child(1){animation-delay:0s}.tile-card:nth-child(2){animation-delay:.1s}.tile-card:nth-child(3){animation-delay:.2s}.flying-to-1{animation:fly-clockwise 1.5s ease-out}@keyframes fly-clockwise{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(100px,-50px) scale(.5);opacity:0}}.flying-to-3{animation:fly-counter-clockwise 1.5s ease-out}@keyframes fly-counter-clockwise{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(-100px,-50px) scale(.5);opacity:0}}.flying-to-2{animation:fly-opposite 1.5s ease-out}@keyframes fly-opposite{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(-100px) scale(.5);opacity:0}}.exchange-complete-banner{display:flex;justify-content:center;align-items:center;gap:15px;background:linear-gradient(135deg,gold,#ffed4e);padding:15px 30px;border-radius:12px;margin-bottom:20px;animation:banner-appear .5s ease-out;box-shadow:0 4px 12px #ffd70080}@keyframes banner-appear{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.banner-icon{font-size:24px;animation:sparkle-rotate 2s linear infinite}@keyframes sparkle-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.banner-text{font-size:16px;font-weight:700;color:#d32f2f;text-shadow:0 1px 2px rgba(255,255,255,.5)}.exchange-progress{text-align:center}.progress-label{font-size:14px;color:#fff;margin-bottom:10px;font-weight:700;text-shadow:0 2px 4px rgba(0,0,0,.3)}.progress-bar{width:100%;height:8px;background:#fff3;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#4caf50,#8bc34a);border-radius:4px;transition:width .5s ease;animation:progress-glow 1.5s ease-in-out infinite}@keyframes progress-glow{0%,to{box-shadow:0 0 5px #4caf5080}50%{box-shadow:0 0 15px #4caf50}}.exchange-tiles{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.2)}.tiles-label{font-size:12px;color:#ffffffb3;margin-bottom:6px;font-weight:600}.tiles-display{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.tiles-display .mahjong-tile{box-shadow:0 2px 4px #0000004d}.tile-text{background:#ffffff4d;color:#fff;padding:4px 10px;border-radius:6px;font-size:14px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.4);box-shadow:0 2px 4px #0003}.exchange-reasoning{margin-top:10px;padding:10px;background:#0003;border-radius:8px;border-left:3px solid #ffd700}.reasoning-label{font-size:12px;color:gold;margin-bottom:6px;font-weight:600}.reasoning-text{font-size:13px;color:#ffffffe6;line-height:1.5;text-shadow:0 1px 2px rgba(0,0,0,.3)}.round-complete-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s ease-out}.round-overlay-content{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:20px;padding:40px;max-width:600px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideUp .5s ease-out;color:#fff}.round-title{font-size:2.5rem;margin:0 0 20px;text-align:center;font-weight:700;text-shadow:2px 2px 4px rgba(0,0,0,.2)}.round-reason{text-align:center;margin-bottom:30px}.reason-badge{display:inline-block;background:#fff3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:10px 20px;border-radius:20px;font-size:1.1rem;font-weight:600}.round-winners{margin-bottom:30px}.round-winners h2{font-size:1.5rem;margin:0 0 15px;text-align:center}.winners-list{display:flex;flex-direction:column;gap:10px}.winner-item{background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:15px;border-radius:10px;display:flex;flex-direction:column;gap:5px}.winner-name{font-size:1.2rem;font-weight:700}.winner-fan{font-size:1.5rem;color:gold;font-weight:700}.winner-types{font-size:.9rem;opacity:.9}.current-ranking{margin-bottom:30px}.current-ranking h2{font-size:1.5rem;margin:0 0 15px;text-align:center}.ranking-table{width:100%;border-collapse:collapse;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:10px;overflow:hidden}.ranking-table th,.ranking-table td{padding:12px;text-align:center;border-bottom:1px solid rgba(255,255,255,.1)}.ranking-table th{background:#0003;font-weight:600;text-transform:uppercase;font-size:.9rem}.ranking-table tbody tr:last-child td{border-bottom:none}.ranking-table .rank{font-weight:700;font-size:1.2rem}.ranking-table .profit{color:#4ade80;font-weight:600}.ranking-table .loss{color:#f87171;font-weight:600}.next-round-countdown{text-align:center;padding:20px;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:15px}.countdown-circle{width:100px;height:100px;margin:0 auto 15px;border-radius:50%;background:#fff3;display:flex;align-items:center;justify-content:center;box-shadow:0 0 20px #ffffff4d;animation:pulse 1s ease-in-out infinite}.countdown-number{font-size:3rem;font-weight:700;color:gold;text-shadow:2px 2px 4px rgba(0,0,0,.3)}.countdown-text{font-size:1.3rem;margin:10px 0;font-weight:600}.round-progress{font-size:1.1rem;margin-top:10px;opacity:.9}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-box{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;padding:40px;width:100%;max-width:420px}.login-box h1{text-align:center;margin-bottom:32px;font-size:24px;color:#333}.oauth-buttons{display:flex;flex-direction:column;gap:16px;margin-top:24px}.oauth-btn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:14px 20px;border:2px solid #e0e0e0;border-radius:8px;background:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s}.oauth-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.github-btn{color:#24292e;border-color:#24292e}.github-btn:hover{background:#24292e;color:#fff}.github-btn:hover svg path{fill:#fff!important}.google-btn{color:#4285f4;border-color:#4285f4}.google-btn:hover{background:#f5f5f5}.error-message{background:#fee;border:1px solid #fcc;color:#c33;padding:12px;border-radius:6px;margin-bottom:16px;font-size:14px}.login-footer{margin-top:32px;text-align:center}.login-footer p{margin:8px 0;color:#666;font-size:14px}.back-link{text-align:center;margin-top:24px}.back-link a{color:#667eea;text-decoration:none;font-size:14px;transition:color .3s}.back-link a:hover{color:#764ba2;text-decoration:underline}.admin-panel{min-height:100vh;background:#f5f5f5}.admin-header{background:#fff;padding:20px 40px;box-shadow:0 2px 8px #0000001a;display:flex;justify-content:space-between;align-items:center}.admin-header h1{margin:0;font-size:24px;color:#333}.header-actions{display:flex;align-items:center;gap:16px}.username{color:#666;font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-badge{padding:4px 12px;background:#667eea;color:#fff;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.logout-btn{padding:8px 16px;background:#e74c3c;color:#fff;border:none;border-radius:6px;cursor:pointer;transition:background .3s}.logout-btn:hover{background:#c0392b}.admin-tabs{background:#fff;padding:0 40px;display:flex;gap:8px;border-bottom:2px solid #e0e0e0}.tab{padding:16px 24px;background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:16px;color:#666;transition:all .3s;margin-bottom:-2px}.tab:hover{color:#333}.tab.active{color:#667eea;border-bottom-color:#667eea;font-weight:600}.admin-content{max-width:1200px;margin:40px auto;padding:0 40px}.control-panel h2,.config-panel h2,.logs-panel h2{margin-top:0;margin-bottom:24px;color:#333}.control-section{background:#fff;padding:32px;border-radius:12px;box-shadow:0 2px 8px #0000000d;margin-bottom:24px;text-align:center}.start-game-btn{padding:16px 48px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:18px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.start-game-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea66}.start-game-btn:disabled{opacity:.6;cursor:not-allowed}.hint{margin-top:16px;color:#999;font-size:14px}.stats-section{background:#fff;padding:32px;border-radius:12px;box-shadow:0 2px 8px #0000000d}.stats-section h3{margin-top:0;margin-bottom:20px;color:#333}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px}.stat-card{background:#f8f9fa;padding:24px;border-radius:8px;text-align:center}.stat-label{font-size:14px;color:#666;margin-bottom:8px}.stat-value{font-size:32px;font-weight:700;color:#667eea}.config-panel,.control-panel,.logs-panel{background:#fff;padding:32px;border-radius:12px;box-shadow:0 2px 8px #0000000d}.config-section{max-width:600px}.config-item{margin-bottom:24px}.config-item label{display:block;margin-bottom:8px;font-weight:600;color:#555;font-size:14px}.config-item input,.config-item select{width:100%;padding:12px 16px;border:2px solid #e0e0e0;border-radius:8px;font-size:15px;transition:border-color .3s;box-sizing:border-box}.config-item input:focus,.config-item select:focus{outline:none;border-color:#667eea}.save-config-btn{width:100%;padding:14px;background:#27ae60;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:background .3s}.save-config-btn:hover:not(:disabled){background:#229954}.save-config-btn:disabled{opacity:.6;cursor:not-allowed}.logs-table{margin-top:20px;overflow-x:auto}.refresh-btn{padding:8px 16px;background:#3498db;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:background .3s}.refresh-btn:hover{background:#2980b9}.logs-table table{width:100%;border-collapse:collapse}.logs-table th,.logs-table td{padding:12px;text-align:left;border-bottom:1px solid #e0e0e0}.logs-table th{background:#f8f9fa;font-weight:600;color:#555;font-size:14px}.logs-table td{font-size:14px;color:#666}.logs-table code{background:#f0f0f0;padding:4px 8px;border-radius:4px;font-size:12px;font-family:Monaco,Consolas,monospace}.view-btn{padding:6px 12px;background:#667eea;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background .3s}.view-btn:hover{background:#764ba2}@media(max-width:768px){.admin-header{padding:16px 20px}.admin-header h1{font-size:18px}.admin-tabs,.admin-content{padding:0 20px}.stats-grid{grid-template-columns:1fr}.logs-table{font-size:12px}}.dashboard,.game-config,.game-logs{padding:2rem;max-width:1400px;margin:0 auto}.dashboard h2,.game-config h2,.game-logs h2{font-size:1.8rem;margin-bottom:1.5rem;color:#1f2937}.control-panel{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-bottom:2rem}.control-panel h3{margin-top:0;margin-bottom:1rem;color:#374151}.game-status{display:flex;align-items:center;gap:1rem;padding:1rem;background:#f9fafb;border-radius:6px}.game-id{font-family:Courier New,monospace;font-size:.9rem}.status-indicator{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:8px}.status-indicator.live{background:#10b981;animation:pulse 2s infinite}.status-indicator.offline{background:#9ca3af}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.stats-section{margin-bottom:2rem}.stats-section h3{margin-bottom:1rem;color:#374151}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.stats-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;align-items:center;gap:1rem}.stats-icon{font-size:2.5rem}.stats-content h3{margin:0 0 .5rem;font-size:.875rem;color:#6b7280;font-weight:500}.stats-value{font-size:1.875rem;font-weight:700;color:#1f2937}.stats-subtitle{font-size:.75rem;color:#9ca3af}.strategy-stats{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 1px 3px #0000001a}.strategy-stats h3{margin-top:0;margin-bottom:1rem}.stats-table{width:100%;border-collapse:collapse}.stats-table th,.stats-table td{padding:.75rem;text-align:left;border-bottom:1px solid #e5e7eb}.stats-table th{background:#f9fafb;font-weight:600;color:#374151}.stats-table tr:hover{background:#f9fafb}.config-form{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 1px 3px #0000001a}.form-section{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid #e5e7eb}.form-section:last-of-type{border-bottom:none}.form-section h3{margin-top:0;margin-bottom:1.5rem;color:#374151;font-size:1.2rem}.form-group{margin-bottom:1.5rem}.form-group label{display:block;font-weight:600;margin-bottom:.5rem;color:#374151}.form-group input[type=number],.form-group input[type=text],.form-group select{width:100%;max-width:400px;padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:4px;font-size:1rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group.checkbox label{display:flex;align-items:center;gap:.5rem;font-weight:500}.form-group.checkbox input[type=checkbox]{width:auto;margin:0}.help-text{display:block;font-size:.875rem;color:#6b7280;margin-top:.25rem}.help-text-box{background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;padding:1rem;margin-bottom:1rem}.help-text-title{font-weight:600;color:#0c4a6e;margin-bottom:.75rem;font-size:.875rem}.variable-list{list-style:none;padding:0;margin:0}.variable-list li{display:flex;align-items:baseline;gap:.5rem;margin-bottom:.5rem;font-size:.875rem}.variable-list li:last-child{margin-bottom:0}.variable-list code{background:#e0f2fe;color:#0369a1;padding:.125rem .375rem;border-radius:3px;font-family:Courier New,monospace;font-size:.8125rem;white-space:nowrap;flex-shrink:0}.variable-list span{color:#475569;line-height:1.5}.form-actions{display:flex;gap:1rem;margin-top:2rem}.btn-primary,.btn-secondary,.btn-danger{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary{background:#667eea;color:#fff}.btn-primary:hover:not(:disabled){background:#5568d3}.btn-secondary{background:#e5e7eb;color:#374151}.btn-secondary:hover:not(:disabled){background:#d1d5db}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled{opacity:.5;cursor:not-allowed}.message{padding:1rem;border-radius:6px;margin-bottom:1.5rem}.message.success{background:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.message.error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.error-message{color:#dc2626;padding:.75rem;background:#fee2e2;border-radius:4px;margin-top:.5rem}.filters{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.filter-input,.filter-select{padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:4px;font-size:1rem}.filter-input{flex:1;min-width:200px}.table-container{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow-x:auto}.logs-table{width:100%;border-collapse:collapse}.logs-table th,.logs-table td{padding:.75rem;text-align:left;border-bottom:1px solid #e5e7eb}.logs-table th{background:#f9fafb;font-weight:600;color:#374151;position:sticky;top:0}.logs-table tr:hover{background:#f9fafb}.logs-table .time{white-space:nowrap;font-size:.875rem}.logs-table .monospace{font-family:Courier New,monospace;font-size:.875rem}.logs-table .reasoning{max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}.no-data{text-align:center;padding:3rem;color:#6b7280;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a}.loading{text-align:center;padding:2rem;color:#6b7280}.llm-config{padding:2rem;max-width:1400px;margin:0 auto}.llm-config h2{font-size:1.8rem;margin-bottom:1.5rem;color:#1f2937}.header-section{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.providers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.provider-card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 1px 3px #0000001a;border:1px solid #e5e7eb;transition:box-shadow .2s}.provider-card:hover{box-shadow:0 4px 12px #00000026}.provider-card .card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e5e7eb}.provider-card h3{margin:0;font-size:1.2rem;color:#1f2937}.badge{padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600}.badge-active{background:#d1fae5;color:#065f46}.badge-inactive{background:#fee2e2;color:#991b1b}.provider-card .card-body{margin-bottom:1rem}.card-row{display:flex;justify-content:space-between;padding:.5rem 0;font-size:.875rem}.card-row .label{color:#6b7280;font-weight:500}.card-row .endpoint{font-family:Courier New,monospace;font-size:.75rem;color:#4b5563}.card-row .api-key{font-family:Courier New,monospace;color:#9ca3af}.card-actions{display:flex;gap:.5rem;padding-top:1rem;border-top:1px solid #e5e7eb}.card-actions button{flex:1}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#fff;border-radius:8px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a}.modal-content.llm-modal{max-width:700px}.modal-content.editor-modal{max-width:1000px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e5e7eb}.modal-header h3{margin:0;font-size:1.25rem;color:#1f2937}.close-btn{background:none;border:none;font-size:2rem;line-height:1;color:#6b7280;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.close-btn:hover{background:#f3f4f6}.modal-form{padding:1.5rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.modal-actions{display:flex;gap:1rem;padding-top:1.5rem;margin-top:1.5rem;border-top:1px solid #e5e7eb}.strategy-config{padding:2rem;max-width:1400px;margin:0 auto}.strategy-config h2{font-size:1.8rem;margin-bottom:.5rem;color:#1f2937}.page-description{color:#6b7280;margin-bottom:2rem}.strategies-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:1.5rem}.strategy-card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 1px 3px #0000001a;border:1px solid #e5e7eb;display:flex;gap:1rem;transition:box-shadow .2s}.strategy-card:hover{box-shadow:0 4px 12px #00000026}.strategy-icon{font-size:3rem;line-height:1}.strategy-content{flex:1}.strategy-content h3{margin:0 0 .5rem;font-size:1.2rem;color:#1f2937}.strategy-description{color:#6b7280;font-size:.875rem;margin-bottom:1rem}.strategy-meta{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem;color:#6b7280}.meta-item strong{color:#374151}.strategy-card button{align-self:flex-start;white-space:nowrap}.editor-form{padding:1.5rem}.editor-section{margin-bottom:1.5rem}.editor-section label{display:block;font-weight:600;margin-bottom:.5rem;color:#374151}.editor-wrapper{border:1px solid #d1d5db;border-radius:4px;overflow:hidden;margin-top:.5rem}.alert{padding:1rem;border-radius:6px;margin-bottom:1rem}.alert-warning{background:#fef3c7;color:#92400e;border:1px solid #fbbf24}.config-overview{margin-top:2rem}.config-overview h3{font-size:1.5rem;margin-bottom:1.5rem;color:#1f2937}.config-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem}.config-card{background:#fff;border-radius:8px;border:1px solid #e5e7eb;overflow:hidden;transition:box-shadow .2s}.config-card:hover{box-shadow:0 4px 12px #0000001a}.config-card-header{background:#f9fafb;padding:1rem 1.25rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.config-card-header h4{margin:0;font-size:1rem;color:#374151;font-weight:600}.config-card-header a{color:#667eea;text-decoration:none;font-size:.875rem;font-weight:500;transition:color .2s}.config-card-header a:hover{color:#5568d3}.config-card-body{padding:1.25rem}.config-card-body.loading{text-align:center;color:#9ca3af;padding:2rem}.config-item{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #f3f4f6}.config-item:last-of-type{border-bottom:none}.config-label{color:#6b7280;font-size:.875rem}.config-value{color:#1f2937;font-weight:500;font-size:.875rem}.config-tags{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem;padding-top:1rem;border-top:1px solid #f3f4f6}.tag{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:500}.tag-success{background:#d1fae5;color:#065f46}.config-summary{text-align:center;padding:1rem 0;margin-bottom:1rem;background:#f9fafb;border-radius:6px}.summary-count{font-size:1.5rem;font-weight:700;color:#667eea}.summary-label{font-size:.75rem;color:#6b7280;margin-left:.25rem}.summary-divider{margin:0 .5rem;color:#d1d5db}.provider-list{display:flex;flex-direction:column;gap:.75rem}.provider-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#f9fafb;border-radius:6px;transition:background .2s}.provider-item:hover{background:#f3f4f6}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.active{background:#10b981}.status-dot.inactive{background:#ef4444}.provider-name{flex:1;font-weight:500;color:#1f2937;font-size:.875rem}.provider-type{font-size:.75rem;color:#6b7280;background:#fff;padding:.25rem .5rem;border-radius:4px}.more-items{text-align:center;color:#6b7280;font-size:.75rem;padding:.5rem;font-style:italic}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:#9ca3af}.empty-icon{font-size:2.5rem;margin-bottom:.5rem}.empty-text{font-size:.875rem}.strategy-list{display:flex;flex-direction:column;gap:.75rem}.strategy-item{display:flex;align-items:center;gap:1rem;padding:.75rem;background:#f9fafb;border-radius:6px;transition:background .2s}.strategy-item:hover{background:#f3f4f6}.strategy-icon{font-size:1.5rem;line-height:1}.strategy-info{flex:1}.strategy-name{font-weight:500;color:#1f2937;font-size:.875rem;margin-bottom:.25rem}.strategy-llm{font-size:.75rem;color:#6b7280}.player-config{padding:2rem;max-width:1400px;margin:0 auto}.player-config h2{font-size:1.8rem;margin-bottom:.5rem;color:#1f2937}.players-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem;margin-top:2rem}.player-card{background:#fff;border-radius:8px;border:2px solid #e5e7eb;overflow:hidden;transition:all .2s}.player-card:hover{border-color:#667eea;box-shadow:0 4px 12px #667eea26}.player-header{background:linear-gradient(135deg,#667eea,#764ba2);padding:1.25rem;display:flex;justify-content:space-between;align-items:center}.player-title{display:flex;align-items:center;gap:1rem;flex:1}.position-icon{font-size:2.5rem;line-height:1}.player-title h3{margin:0;color:#fff;font-size:1.25rem;font-weight:600}.player-subtitle{color:#fffc;font-size:.875rem}.player-header .btn-edit{background:#fff;color:#667eea;border:none;padding:.5rem 1rem;border-radius:6px;font-weight:500;cursor:pointer;transition:all .2s}.player-header .btn-edit:hover{background:#f9fafb;transform:translateY(-1px)}.player-body{padding:1.25rem}.player-info-row{display:flex;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid #f3f4f6}.player-info-row:last-child{border-bottom:none}.info-label{color:#6b7280;font-weight:500;font-size:.875rem}.info-value{color:#1f2937;font-size:.875rem;text-align:right;max-width:65%}.strategy-badge{display:inline-flex;align-items:center;gap:.25rem;background:#f3f4f6;padding:.25rem .75rem;border-radius:12px;font-weight:500}.user-management{padding:2rem;max-width:1200px;margin:0 auto}.user-management .header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.user-management h2{font-size:1.8rem;color:#1f2937;margin:0}.user-table-container{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.user-table{width:100%;border-collapse:collapse}.user-table thead{background:#f9fafb}.user-table th{padding:1rem;text-align:left;font-weight:600;color:#374151;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em}.user-table td{padding:1rem;border-top:1px solid #e5e7eb;color:#1f2937}.user-table tbody tr:hover{background:#f9fafb}.provider-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500}.provider-badge.github{background:#f6f8fa;color:#24292f}.provider-badge.google{background:#fef3f2;color:#b91c1c}.role-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500}.role-badge.super-admin{background:#fef3c7;color:#92400e}.role-badge.admin{background:#dbeafe;color:#1e40af}.current-user-badge{color:#059669;font-size:.875rem;margin-left:.5rem}.role-select{padding:.25rem .5rem;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem}.actions{display:flex;gap:.5rem}.btn-edit,.btn-delete,.btn-save,.btn-cancel{padding:.375rem .75rem;border:none;border-radius:6px;font-size:.875rem;cursor:pointer;transition:all .2s}.btn-edit{background:#3b82f6;color:#fff}.btn-edit:hover{background:#2563eb}.btn-delete{background:#ef4444;color:#fff}.btn-delete:hover{background:#dc2626}.btn-delete:disabled{background:#d1d5db;cursor:not-allowed}.btn-save{background:#10b981;color:#fff}.btn-save:hover{background:#059669}.btn-cancel{background:#6b7280;color:#fff}.btn-cancel:hover{background:#4b5563}*{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,#1e3c72,#2a5298);min-height:100vh}#root{width:100%;min-height:100vh}
