*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);min-height:100vh;color:#fff}.app{max-width:480px;margin:0 auto;padding:20px;min-height:100vh;display:flex;flex-direction:column;align-items:center}.title{font-size:1.8rem;margin:20px 0;text-align:center}.btn{padding:12px 28px;border:none;border-radius:8px;font-size:1rem;cursor:pointer;transition:all .2s;font-weight:600}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 4px 15px #667eea66}.btn-secondary{background:#2d3748;color:#fff;border:1px solid #4a5568}.btn-secondary:hover{background:#4a5568}.btn-ghost{background:transparent;color:#a0aec0;border:1px solid #4a5568}.btn-ghost:hover{color:#fff;border-color:#718096}.btn-sm{padding:6px 14px;font-size:.85rem}.lobby-card,.waiting-card,.result-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:40px 30px;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.lobby-card h2,.waiting-card h2{margin-bottom:24px;font-size:1.4rem}.divider{margin:20px 0;color:#718096;position:relative}.divider:before,.divider:after{content:"";position:absolute;top:50%;width:40%;height:1px;background:#4a5568}.divider:before{left:0}.divider:after{right:0}.join-form{display:flex;gap:10px}.join-form input{flex:1;padding:12px 16px;border:1px solid #4a5568;border-radius:8px;background:#0000004d;color:#fff;font-size:1.1rem;text-align:center;letter-spacing:4px}.join-form input::placeholder{letter-spacing:normal;color:#718096}.room-id-display{margin:20px 0}.room-id-display .label{display:block;color:#a0aec0;font-size:.9rem;margin-bottom:8px}.room-id-display .room-id{font-size:3rem;font-weight:700;letter-spacing:8px;color:#667eea}.hint{color:#718096;margin-bottom:20px}.game{width:100%;display:flex;flex-direction:column;align-items:center}.game-info{display:flex;align-items:center;gap:20px;margin-bottom:16px}.player-info{display:flex;flex-direction:column;align-items:center;gap:4px}.mark{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700}.mark.x{background:#ea666633;color:#fc8181}.mark.o{background:#667eea33;color:#667eea}.vs{color:#718096;font-weight:700}.turn-indicator{padding:8px 20px;border-radius:20px;margin-bottom:20px;font-size:.95rem;background:#ffffff0d;color:#a0aec0;transition:all .3s}.turn-indicator.my-turn{background:#667eea33;color:#667eea;animation:pulse 1.5s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:300px;height:300px;margin:10px 0 20px}.board-small{width:180px;height:180px;margin:20px auto}.cell{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:2.5rem;font-weight:700;transition:all .2s;-webkit-user-select:none;user-select:none}.board-small .cell{font-size:1.4rem;border-radius:8px}.cell.clickable{cursor:pointer}.cell.clickable:hover{background:#ffffff1a;border-color:#667eea80}.cell.x{color:#fc8181}.cell.o{color:#667eea}.cell.winner{background:#48bb7833;border-color:#48bb78;animation:glow 1s infinite alternate}@keyframes glow{0%{box-shadow:0 0 5px #48bb784d}to{box-shadow:0 0 15px #48bb7899}}.room-info{color:#718096;font-size:.85rem;display:flex;align-items:center;gap:10px}.result-card{padding:30px}.result-emoji{font-size:4rem;margin-bottom:10px}.result-card h2{margin-bottom:10px;font-size:1.5rem}.result-card.win h2{color:#48bb78}.result-card.lose h2{color:#fc8181}.result-card.draw h2{color:#ecc94b}.result-actions{display:flex;gap:12px;justify-content:center;margin-top:20px}.notification{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:8px;font-size:.9rem;z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.notification.info{background:#667eeae6;color:#fff}.notification.error{background:#ea6666e6;color:#fff}.notification.warning{background:#ecc94be6;color:#1a1a2e}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter-from,.fade-leave-to{opacity:0}.connecting{padding:20px;color:#a0aec0}
